2016-01-13 75 views
0

這裏的的logback的一部分:的logback RollingFileAppender進行XML沒有翻身或刪除舊的歸檔日誌

<appender name="APP_LOG" 
       class="ch.qos.logback.core.rolling.RollingFileAppender"> 
     <file>${APP_HOME}/loader.log</file> 
     <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
      <Pattern> 
       %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 
      </Pattern> 
     </encoder> 

     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
      <!-- rollover daily --> 
      <fileNamePattern>${APP_HOME}/archived/loader.%d{yyyy-MM-dd}.%i.log</fileNamePattern> 
      <timeBasedFileNamingAndTriggeringPolicy 
        class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 
       <maxFileSize>10MB</maxFileSize> 
      </timeBasedFileNamingAndTriggeringPolicy> 
      <!-- Keep logs max for x days --> 
      <maxHistory>1</maxHistory> 
      <cleanHistoryOnStart>true</cleanHistoryOnStart> 
     </rollingPolicy> 

    </appender> 

這應該每天創建一個新的日誌文件。今天是2016年1月13日,因此如果2016年1月12日沒有日誌,它應該將當前日誌放入loader.2016-01-12.0.log,然後創建一個新的日誌文件?這不是那樣做的。

它也應該刪除文件loader.2015-12-30.0.log和loader.2016-01-11.0.log,但它也沒有這樣做。

我所做的只是在基於Eclipse的IDE中啓動應用程序,並且我可以驗證日誌文件loader.log在每次運行應用程序時都會更改。這意味着logback開始,但由於某種原因,它不能正確清理舊文件。請幫忙?

回答

0

TimeBasedRollingPolicy的Logback文檔指定maxHistory的單位是個月,而不是日期

關於在沒有創建日誌的日子裏創建空日誌文件(大小爲0),我記得log4j沒有創建它們。在log4j中,OOTB日誌輪轉爲passive,並且僅在新日期中將日誌語句發送到log4j時觸發。

我會假設Logback的行爲類似,但我正在檢查,我很快就會更新這個答案。

編輯:確認TimeBasedRollingPolicy不會爲最後一個日誌語句和當前日誌語句之間的任何完整流逝的中間日期創建零大小的文件。

也就是說,如果每天轉動你的最後一個日誌聲明是在2015年1月1日和你的下一個語句是2015年1月13日,當後者的語句進行處理,在這一點上的logback仍將會打開文件2015-01-01。它會發現,它會引發側翻,基本上包括:

  1. renaming the current file with the archival pattern - 和 -
  2. opening a new file

但它不會創建任何中間的零字節文件。

+0

確認已添加。 – raulk

+2

我想評論說,timeBasedRollingPolicy派生你的單位和天有效。但你是對的。該實施導致在新的一天發生翻轉。我嘗試設置系統點擊並發現這一點。謝謝! – obesechicken13

+0

另外,至少對我來說,cleanHistoryOnStart什麼也不做 – obesechicken13

相關問題