2012-03-27 79 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