我正在寻找一种方法来在午夜旋转日志文件,并且要求无论日志中写什么,都必须遵守翻滚时间(功能相当于* nix logrotate程序)。保证日志在午夜旋转的Java日志框架
我看过的所有实现(log4j,logback)都需要记录事件作为日志循环的触发器( 00:00之后的第一个日志事件触发旋转)。这意味着不能保证日志在给定时间被轮换(因为所需的触发事件可能在数小时后到达)。
是否有一个日志框架,可以确保在给定时间的日志轮换?
我正在寻找一种方法来在午夜旋转日志文件,并且要求无论日志中写什么,都必须遵守翻滚时间(功能相当于* nix logrotate程序)。保证日志在午夜旋转的Java日志框架
我看过的所有实现(log4j,logback)都需要记录事件作为日志循环的触发器( 00:00之后的第一个日志事件触发旋转)。这意味着不能保证日志在给定时间被轮换(因为所需的触发事件可能在数小时后到达)。
是否有一个日志框架,可以确保在给定时间的日志轮换?
如果是这样,你可以使用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>
感谢您的答案,但虚拟日志事件正是我想要避免的。 – diciu 2012-03-28 05:44:09
你有没有解决过这个问题? – Will 2012-11-21 08:17:01
我没有找到合适的解决方案 - 我使用了虚拟日志事件。 – diciu 2012-11-21 09:06:10