2014-02-17 64 views
0

當前彈簧應用程序需要slf4j,log4jslf4j-log4j12作爲日誌記錄工具。記錄停止滾動到新文件

的問題是,

(1)當所述日誌文件是由外部工具(寫字板或ultraedit都)打開上的每個時間,然後將文件停止滾動。這是非常煩人的,因爲該文件可能增長爲10千兆字節。

(2)MaxFileSize設置爲10Mb,但每次將日誌文件滾動到20Mb。

這裏是配置

log4j.rootLogger=DEBUG, ROL 
log4j.appender.ROL=org.apache.log4j.RollingFileAppender 
log4j.appender.ROL.Encoding=Unicode 
log4j.appender.ROL.File=D:\\IamdWatchingYou.log 
log4j.appender.ROL.MaxFileSize=10000KB 
log4j.appender.ROL.MaxBackupIndex=10 
log4j.appender.ROL.layout=org.apache.log4j.PatternLayout 
log4j.appender.ROL.layout.ConversionPattern=%d -- %p -- %c -- %m%n 

而在一般情況這個問題發生的所有主要應用服務器(有時時,JBoss的Tomcat,WebSphere和)。

問題是,什麼是根本原因(兼容性或配置)。如果選擇其他日誌實現(Logback或JDK日誌記錄),是否要解決該問題?我只是想停止製作大量的日誌文件。

回答

1

這是翻轉邏輯的正常行爲,您可以在log4j類RollingFileAppender中看到它。

翻轉邏輯會嘗試將當前日誌文件重命名爲包含時間戳的名稱,並且如果它不能管理的原因是例如文件被另一個應用程序打開的事實,則翻轉邏輯將自動失敗並且不會做任何改變(不記錄警告或錯誤)。

這意味着日誌將繼續在同一個文件中進行,直到下一次成功執行翻轉邏輯。

+0

謝謝。因爲發生的事情是正常的,我可以採取你的陳述嗎?那麼如何查看日誌文件而不會搞亂log4j的滾動過程呢?如果是windows系統,很多編輯會在日誌文件上加鎖,並混淆Log4J,如何防止這種情況發生? – Dreamer

+1

這是正確的,它的正常行爲。在Windows中,使用Notepad ++,你不會有問題。 IT會要求您不時重新加載文件,但不會將其鎖定,請參閱http://superuser.com/questions/21071/editor-that-does-not-lock-an-open-file –

+0

有趣。我在Windows中使用記事本++,並且發生此問題。可能是這個問題的原因也與問題中的第(2)項有關:即使'MaxFileSize'設置爲10Mb,如果我沒有在記事本++中打開任何日誌文件,日誌文件仍會回滾到20Mb。看起來配置被默認設置覆蓋,我不知道.. – Dreamer