簡體   English   中英

如何在Log4j中基於時間而不是大小來旋轉日志文件?

[英]How to rotate log files based on time rather than size in Log4j?

我使用Log4j和RollingFileAppender根據大小創建日志輪換。

如何將其配置為在旋轉前記錄每個文件一段時間

例如,每個日志文件包含一小時的日志,在每小時的頂部旋轉?

我使用Properties對象以編程方式在Java中配置Log4j(而不是log4j.properties文件)

您可能想要使用DailyRollingFileAppender 例如,要按小時滾動它們,您將使用'.'yyyy-MM-dd-HH的DatePattern。 對於log4j.properties文件:

log4j.appender.myAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.myAppender.DatePattern='.'yyyy-MM-dd-HH
...

或者為您的程序化配置:

DailyRollingFileAppender appender = new DailyRollingFileAppender();
appender.setDatePattern("'.'yyyy-MM-dd-HH");

Logger root = Logger.getRootLogger();
root.addAppender(appender);

不幸的是,使用DailyRollingFileAppender意味着您不能限制文件大小 - 如果您在給定的滾動周期中有大量日志,這可能會有問題。

另外,

log4j.appender.myAppender=org.apache.log4j.DailyRollingFileAppender
**log4j.appender.myAppender.DatePattern='.'yyyy-MM-dd-HH**

以下列表顯示了log4j定義的所有日期模式,

Minutely  '.'yyyy-MM-dd-HH-mm application.log.2013-02-28-13-54
Hourly '.'yyyy-MM-dd-HH application.log.2013-02-28-13
Half-daily '.'yyyy-MM-dd-a application.log.2013-02-28-AM app.log.2013-02-28-PM
Daily '.'yyyy-MM-dd application.log.2013-02-28
Weekly '.'yyyy-ww application.log.2013-07 app.log.2013-08 
Monthly '.'yyyy-MM application.log.2013-01 app.log.2013-02

使用任何滾動文件appender時要注意的另一件事是確保一次只有一個JVM訪問特定的日志文件。 這是因為log4j緩存日志文件大小是出於性能原因,如果多個JVM訪問相同的文件,那么“滾動”會變得很糟糕。

使用DailyRollingFileAppender

特別是,將其'datePattern'屬性設置為'.'yyyy-MM-dd-HH會導致文件每小時輪換一次。

您需要使用DailyRollingFileAppender 盡管它具有誤導性的名稱,但它可以配置為在可配置的時間段內運行,最長可達數分鍾。

暫無
暫無

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

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