0
我的名字是Luis Ribeiro,我正在設置log4j,這樣它會刪除舊的旋轉日誌。如何將log4j配置爲僅保留最近n天的日誌文件?
我們現在的解決方案是使用cron和腳本。 例如像這樣:How to configure log4j to only keep log files for the last seven days?
但這裏有一些重大問題:
用機器(N)- 工作使用不同的結構和操作系統(n * m * z)
- 即使應用程序停止並且存在信息丟失,Cron也會刪除
理想的是,當應用程序運行時,log4j會小心完成日誌輪換。
- 它會旋轉每天一次:RollingFile:每天和filePattern =「日誌/ $ {文件名} [%d {YYYY-MM-DD} | - %I |任何類型的計數器] .LOG。 gz「with TimeBasedTriggeringPolicy
- 保留實際的日誌和n個循環文件。舊版被刪除:app.log,app。{ - 1天} .log.gz,...,app。{ - n天} .log.gz
- 模式名稱並不重要,它可以是數字在文件名
- 我們不能使用大小作爲觸發器。我們不知道該節目在一天中會做多少。日誌大小變化非常非常大
- 它應該是結構和操作系統無關的。我們更願意增強log4j屬性或XMl文件,而不是添加腳本和cron觸發器。
我嘗試使用DefaultRolloverStrategy和TimeBasedTriggeringPolicy。但問題是:
- filePattern = $ {文件名}%d {YYYY-MM-DD} - %i.log.gz將導致:app.log,應用{ - 11天} - 1.log.gz,app。{ - 2 day} -1.log.gz,...,app。{ - (n + 1)days} -1.log.gz,... =>它永遠不會被刪除
- filePattern = $ {文件名} - %i.log.gz導致java.lang.IllegalStateException:模式不包含日期
有沒有走,以增強log4j的,因此將採取關心所有這些任務?
與問候, 路易斯
謝謝您的回答。我會繼續搜索 –