Java日志框架,保证午夜日志轮换

时间:2012-03-27 09:57:05

标签: java logging

我正在寻找一种在午夜轮换日志文件的方法,其中添加的要求是无论在日志中写入什么内容,都必须遵守滚动时间(功能相当于* nix logrotate 程序)。

我看过的所有实现(log4j,logback)都需要记录事件作为日志轮换的触发器( 00:00之后的第一个日志事件触发旋转)。这意味着无法保证在给定时间轮换日志(因为所需的触发事件可能在数小时后到达)。

是否有一个日志框架可以保证在给定时间内的日志轮换?

1 个答案:

答案 0 :(得分:1)

如果是这样,你可以使用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>