2010-12-01 53 views
2

我們使用的是Log4j v1.2.14。我們已經在使用org.apache.log4j.ConsoleAppender,現在我們需要/需要有日常旋轉日誌。因此,我們計劃使用org.apache.log4j.DailyRollingFileAppender來製作每日旋轉日誌。Log4j DailyRollingFileAppender vs ConsoleAppender性能

我的問題是,是DailyRollingFileAppender額外開銷/對ConsoleAppender有性能影響,因爲它必須另外檢查文件是否必須在每個打印語句中旋轉/滾動?

任何意見/用戶體驗也表示讚賞。

+0

你可以看看源代碼並找出... – skaffman 2010-12-01 09:58:13

+0

@skaffman:好的。一般來說,其他用戶在這方面的經驗/意見是什麼? – Gnanam 2010-12-01 10:15:41

回答

2

您的論點是正確的,並且邏輯規​​定存在開銷/性能影響。多少?如果你害怕性能受到影響,你應該自己測量一下。

這實際上取決於你有多少個日誌語句。大量的調試語句是最糟糕的,因爲它們可能會影響性能,除非您正在使用類型爲logger.isDebugEnabled()的警衛。

如果你能負擔得起,我建議切換到slf4jLogback作爲基礎實施。 Logback的主要焦點是速度,似乎要花很長時間才能確保它比其他日誌記錄系統更快。

+0

謝謝你讓我知道另一個日誌框架* slf4j *的存在。那麼,slf4j已經取代了log4j? – Gnanam 2010-12-01 12:14:07

0

我不認爲滾動文件appender必須比ConsoleAppender慢。它不必檢查每個日誌語句的旋轉情況,它可以使用計時器線程。 ConsoleAppender受到所有必須寫入控制檯的限制,因此可能會導致爭用,因爲線程可能正在輪候。

(爲了澄清,我不是主張的是ConsoleAppender肯定是慢,只是它不是一個定局哪個選項比較快。)

log4j的DailyRollingFileAppender似乎根據its api docs有一些問題。它說javadoc

DailyRollingFileAppender已被觀察到展示同步問題和數據丟失。

這聽起來像報警的原因。顯然,在extras section of the Log4j site下有滾動文件appender的改進版本。

相關問題