2010-02-26 77 views
0

Log4J滾動文件appender是否有任何已知的錯誤。我一直在使用log4j很多年,但並沒有意識到這一點。我的一位同事暗示有已知的問題(並且我發現其中一個是Bugzilla條目),在負載較重的情況下,滾動文件appender(我們使用基於時間的文件)在午夜發生時可能無法正確執行。log4j滾動文件appender - 多線程問題?

Bugzilla的入口 - https://issues.apache.org/bugzilla/show_bug.cgi?id=44932

欣賞別人如何克服這種投入和指針。

感謝, Manglu

回答

2

我還沒有遇到這個問題我自己,並從錯誤報告,我會懷疑,這是很罕見的。 Th Log4j RollingFileAppender一直以可預測和可靠的方式爲我開發和維護的應用程序工作。

這個特定的錯誤,如果我理解正確的話,只會如果有Log4j的多個實例,就像如果你有相同的應用程序的多個實例同時運行,寫入同一個日誌文件發生。然後,當它是翻轉時間時,一個實例無法鎖定該文件以刪除該文件並將其內容存檔,導致丟失要歸檔的數據。

我不能給任何你的同事提到,除非你想具體引用他們的其他已知的bug發言。一般來說,我相信Log4j對生產應用程序來說是可靠的。

+0

康斯坦丁嗨, 這一直是我的觀察了。我已經安全地使用了log4j多年。我會調查並報告回來。 謝謝, Manglu – Manglu 2010-03-01 03:16:12

0

@kg,這也發生在我身上。確切的情況。同一個程序的2個實例。 我將它更新爲新的rolling.RollingFileAppender,而不是使用DailyFileRoller(無論它被稱爲什麼)。

我通過crontab同時運行兩個實例。實例會輸出儘可能多的消息,直到達到5秒。他們通過使用System.currentTimeMillis來測量1秒的時間,並附加到計數器以估計循環的5秒時間週期。所以在這個測試中有最小的開銷。每個輸出日誌消息都包含一個遞增的數字,並且該消息包含從命令行設置的標識符,以便能夠將它們分開。

從把日誌消息順序一起,處理中的一箇中從一開始寫入序列結束時成功,則其他一個失去其輸出的第一條目(從0起)。

這確實應該是固定的...