2010-07-25 156 views
34

是否可以壓縮日誌文件(我通過RollingFileAppender進行)?壓縮Log4j文件

+0

compres是什麼意思?簡化?還是真的壓縮,你必須解壓縮? – 2010-07-25 13:44:33

+0

壓縮(壓縮,例如)歸檔 – 2010-07-25 14:01:45

回答

37

log4j extras有這種支持:

只需添加以下到您的RollingFileAppender進行配置並具有。廣州文件名末尾它將自動壓縮你的日誌文件:

<appender...> 
    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy"> 
     <param name="FileNamePattern" value="/wombat/foo.%d{yyyy-MM}.gz"/> 
    </rollingPolicy> 
</appender> 

檢查這裏的一些細節在javadoc:

http://logging.apache.org/log4j/companions/extras/apidocs/org/apache/log4j/rolling/TimeBasedRollingPolicy.html

希望幫助

+11

我如何將它添加到屬性文件? >'log4j.appender.DefaultLog = org.apache.log4j.RollingFileAppender log4j.appender.DefaultLog.File = $ {mailbox.root} /logs/application.log log4j.appender.DefaultLog.MaxFileSize = 50MB log4j.appender .DefaultLog.MaxBackupIndex = 100 log4j.appender.DefaultLog.layout = org.apache.log4j.PatternLayout log4j.appender.DefaultLog.layout.ConversionPattern =%d%p [%c] - %m%n' – MiKu 2010-10-19 14:45:35

+1

什麼是**爲? – imdhmd 2012-12-19 07:21:54

+0

這就是你如何在Java中指定通配符來包含目錄,而不是'*',它僅用於文件。 – hd1 2013-03-01 00:55:57

2

我知道這並不完全回答你的問題,但它確實提出了一種替代解決方案。

我們處理這個問題的方式是在一天結束時運行一個批處理過程,將以前的任何日誌文件壓縮到今天的日期,擺脫一週之前的任何日誌文件,然後將它們複製到另一個文件服務器。通過這種方式,應用程序不需要消耗任何CPU週期,而在服務器上,我們擁有不超過一週的日誌,而在另一臺文件服務器上,我們擁有較早的日誌文件。

1

我看到的唯一的其他事情是將log4j升級到1.3.15/1.4以上版本,並使用TimeBasedRollingPolicy滾輪啓用自動壓縮,但這需要本質上升級log4j(以及該應用的兼容性)

嗯..可能是另一個更好的事情就是讓log4j在文件滾動後執行命令。因此,而不是gzip,我可以使用其他壓縮邏輯,如bzip或lzop等。如果我今天在log4j中擁有這個工具,那將是另一種方法。

16

我遇到了這個偉大的答案,但後來不斷調查了一下,log4j 2出來了!

現在,您可以使用基本庫進行壓縮以及更多...這只是真棒!

RollingFileAppender - 我正在尋找既有timeBased又有sizeBased滾動的東西,並且有壓縮......它有兩個!我可以放棄我的syslog4j庫,因爲這個庫也有它!

請不要使用log4j 1.2 + extras,除非你真的必須這樣做。

+0

我同意。現在我們在log4j 2中擁有它的標準是非常棒的,但截至評論發佈時,log4j 2處於測試階段。儘管如此,我仍然鼓勵任何能夠使用該測試版的人在發佈之前幫助改進它。 – 2013-09-09 21:22:28

+0

是的,測試版計劃在六月結束,但它仍然在進行......很可惜。它對我來說工作得很好,但政策規定在生產中沒有測試代碼。 – Daren 2013-09-10 07:54:46