Инфраструктура ведения журналов Java, которая гарантирует ротацию журналов в полночь - PullRequest
3 голосов
/ 27 марта 2012

Я ищу способ ротации файла журнала в полночь с дополнительным требованием, что независимо от того, что записывается в журнал, ДОЛЖНО соблюдаться время пролонгации (функциональным эквивалентом будет * nix logrotate program).

Все реализации, на которые я смотрел (log4j, logback), требуют события регистрации в качестве триггера для ротации журнала (первое событие журнала после 00:00 запускает вращение).Это означает, что нет гарантии, что журналы будут чередоваться в определенный момент времени (поскольку требуемое событие запуска может появиться через несколько часов).

Существует ли структура ведения журналов, которая гарантирует ротацию журналов в определенный момент времени?

1 Ответ

1 голос
/ 27 марта 2012

Если это так, вы можете использовать CronTrigger, чтобы запускать простой Java-класс для создания фиктивного журнала в полночь каждый день.

Предполагая, что ваш код находится на Springframework, вы можете взять приведенную ниже конфигурацию в качестве справочной.

<bean id="logRotateAlert" class="org.springframework.scheduling.quartz.JobDetailBean">
  <property name="jobClass">
    <value>xxx.xxx.LogRotateAlert</value>
  </property>
</bean>
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
  <property name="jobDetail" ref="logRotateAlert"/>
  <property name="cronExpression" value="0 0 0 * * ?"/>
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  <property name="triggers">
    <list>
      <ref bean="cronTrigger"/>
    </list>
  </property>
</bean>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...