2012-02-17 115 views
2

我有一個應用程序只能在硬件觸發時運行。我們最近還添加了log4cxx的傳統C++應用程序,以生成日誌以幫助調試罕見的生產問題。我們當然需要每日日誌文件。Log4cxx DailyRollingFileAppender沒有翻轉

事實證明,我們從來沒有滾動文件。

爲了調試問題,我們將它設置爲在一分鐘而不是一天中進行翻轉。我們發現,如果程序在一分鐘內幾秒鐘內被調用,那麼文件將會翻轉。如果在分鐘之後超過5秒鐘被調用,則不會發生翻轉。

測試程序需要大約5秒的時間才能運行。

有沒有辦法讓log4在程序啓動時翻轉文件,如果需要?

即如果我們在記錄6分鐘,然後不,直到50分鐘再次運行,我們將在日誌文件滾動我們爲50分鐘開始記錄之前,而不是隻追加到分鐘6

+0

log4net和log4j按照這種方式按預期工作,所以該錯誤是與log4cxx。:(任何人遇到這個問題與log4cxx? – Shire 2012-02-18 22:24:01

回答

1

原來的錯誤在log4cxx實施。 :(

0

嘗試{

log4j.rootLogger=debug, R 

# Pattern to output the caller's file name and line number. 

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.R.DatePattern=test-%Y-%m-%d.log 

}

+0

這並不是w不幸的是,log4cxx的ork。雖然工作log4net。 :( – Shire 2012-02-23 01:09:15

0

DailyRollingFileAppender並沒有我的情況下工作太(在log4cxx 0.10.0),所以我結束了使用RollingFileAppenderTimeBasedRollingPolicy

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 
    <appender name="roll" class="org.apache.log4j.rolling.RollingFileAppender"> 
    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy"> 
     <param name="FileNamePattern" value="roll.%d{yyyy-MM-dd}.log"/> 
    </rollingPolicy> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%p %t %c - %m%n"/> 
    </layout> 
    <param name="Append" value="true"/> 
    </appender> 
    <root> 
    <priority value="ALL"/> 
    <appender-ref ref="roll"/> 
    </root> 
</log4j:configuration> 

點是指定<param name="file">或它贏得(也不承認StaticLogFileName帕拉姆在原來的log4j)