簡體   English   中英

Log4j RollingFileAppender在Linux上滾動,但在Windows上不滾動

[英]Log4j RollingFileAppender rolls on Linux, but not on Windows

我正在為Java應用程序設置標准的logrotate樣式Log4j記錄器。 為此,我有幾個RollingFileAppender (用於項目的每個“子單元”),輸出到應用程序文件夾中的日志文件。 在設置為100MB之前,我已經設置了大小限制。 在Linux上,這可以完美地工作,並且日志在達到100 MB之后會被翻轉。

但是,在Windows上,日志文件只會繼續增長並且不會滾動。

我在此Stackoverflow帖子中已經讀到,使用同一日志文件的同一JVM(或多個JVM)上的多個Java應用程序將導致Log4j失敗,因為多個進程對該文件打開了文件描述符-但在我的情況下,這很明顯這不是問題,因為我在單個 JVM上使用了單個 Java應用程序。

請注意,該日志文件在任何其他過程中均未打開。

任何人都可以對導致此/建議解決方法的原因提供更多的見解嗎?

根據CekiGülcü撰寫的 《完整Log4j手冊》

可以在同一JVM中運行的多個追加程序記錄到同一文件嗎?

答案是不。 由於性能和其他技術原因,log4j在附加程序之間不執行任何同步。 同一 JVM中將多個追加程序記錄到同一文件與在不同 JVM中將多個追加程序記錄到同一文件沒有太大區別。

鑒於以上所述,一種解決方案是創建一個RollingFileAppender並將其附加到根記錄器,即

// Set up the RollingFileAppender
RollingFileAppender rollingAppender = new RollingFileAppender();
rollingAppender.setFile(logfileURL);

... (set up your appender here)

// Attach it to the root logger
LogManager.getRootLogger().addAppender(rollingAppender);

Log4j現在將沒有多文件描述符問題,並將所有來源的所有內容記錄到單個日志文件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM