2012-03-27 82 views
3

我正在寻找一种方法来在午夜旋转日志文件,并且要求无论日志中写什么,都必须遵守翻滚时间(功能相当于* nix logrotate程序)。保证日志在午夜旋转的Java日志框架

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

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

+0

你有没有解决过这个问题? – Will 2012-11-21 08:17:01

+0

我没有找到合适的解决方案 - 我使用了虚拟日志事件。 – diciu 2012-11-21 09:06:10

回答

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> 
+1

感谢您的答案,但虚拟日志事件正是我想要避免的。 – diciu 2012-03-28 05:44:09