簡體   English   中英

logback:SizeAndTimeBasedRollingPolicy不刪除具有4位“%i”的文件

[英]logback : SizeAndTimeBasedRollingPolicy not deleting files with 4 digit “%i”

我們在我們的產品中使用SizeAndTimeBasedRollingPolicy / SizeAndTimeBasedFNATP(返回1.1.3)。 這是來自logback配置文件的片段:

 <appender name="SERVER_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${MY_LOGS}/myabc.log</file> <append>true</append> <!-- Roll log file on both time (per day) and size (250mb). Gzip on roll. --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- location and name of rolled log files --> <fileNamePattern>${MY_LOGS}/myabc-%d{yyyy-MM-dd}.%i.gz</fileNamePattern> <!-- keep 30 days worth of history --> <maxHistory>30</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- whenever the file size reaches 250MB, roll it --> <maxFileSize>250MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSS} [%thread] %-5level %logger{24} [%C{1}.%M]</pattern> </encoder> </appender> 

生成的日志文件具有以下名稱:myabc-2016-11-21.0.gz,myabc-2016-11-21.1.gz,myabc-2016-11-21.2.gz等。

問題是,如果日志文件的擴展名(%i)超過3位,則30天(maxHistory)后不會將其刪除。 例如,myabc-2016-11-21.0.gz將在30天后刪除,但是myabc-2016-11-21。 1000 .gz沒有被刪除。

我是否需要將其他附加程序/配置添加到logback配置文件中,以確保擴展名超過3位的文件也被刪除,或者logback中的錯誤?

[我嘗試過使用Logback 1.1.7,但這沒有幫助]

我有同樣的問題,看回了源代碼(版本1.2.3)

軟件包-ch.qos.logback.core.rolling.helper

並找到這行buf.append("(\\\\d{1,3})");

因此它被硬編碼為1-3位整數,其中1000個超出此間隔,索引大於1000的新日志文件不會替換舊的日志文件,而是繼續附加到文件系統。

這是logback中的錯誤。 這是jira ,這是建議的修復程序( PR )。

此問題已在1.3.0-alpha1中修復
你可以在這里檢查提交

https://github.com/qos-ch/logback/commit/f264607fb450

他們從

buf.append("(\\d{1,3})");

buf.append("(\\d+)");

還有這里的官方新聞
https://logback.qos.ch/news.html

TimeBasedArchiveRemover現在可以處理超過999個的索引。這修復了Diego Furtado報告的LOGBACK-1175,后者還提供了相關PR。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM