Log4j DailyRollingFileAppender:指定翻转目录

Log4j DailyRollingFileAppender: Specifying rollover directory

有谁知道 log4j 的 DailyRollingFileAppender class 是否能够在与源文件不同的目录中创建新日志?

我知道这可以通过 RollingFileAppender 实现,如下所示: log4j move rolling files to another directory/location

我想使用前一个 appender 的原因是因为它使翻转过程基于日期或时间,而不是最大文件大小。

log4j.rootLogger=INFO, EXAMPLE

log4j.appender.EXAMPLE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.EXAMPLE.DatePattern='.'yyyy-MM-dd
log4j.appender.EXAMPLE.File=/path/to/my/logs/example.log
log4j.appender.EXAMPLE.Append=true
log4j.appender.EXAMPLE.layout=org.apache.log4j.PatternLayout
log4j.appender.EXAMPLE.layout.ConversionPattern=%d{dd-MMM-yyyy HH:mm:ss,SSS} - %X{userId} - %X{sessionId} %-5p %c{1}:%L - %m%n

有一种方法可以在不同的目录中创建滚动日志(尽管这有点胡扯,而且在目录名称和位置方面非常有限)。

由于 DatePattern 将模式附加到日志文件名的末尾,您可以这样做:

log4j.appender.EXAMPLE.DatePattern='_old/example.log.'yyyy-MM-dd

这将导致完成的日志在如下目录中结束:- /path/to/my/logs/example.log_old

找到下面的代码,您可以在其中以非常简单的方式将其存档,请检查并还原 Reference

#Worked with 2.17 version
log4j.rootLogger=INFO, app
log4j.appender.app=org.apache.log4j.rolling.RollingFileAppender
log4j.appender.app.rollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
log4j.appender.app.rollingPolicy.ActiveFileName=worker.log
log4j.appender.app.rollingPolicy.FileNamePattern=worker-.%d{yyyyMMdd}.log.gz
log4j.appender.app.layout=org.apache.log4j.PatternLayout
log4j.appender.app.layout.ConversionPattern=%d [%t] %-5p (%F:%L) - %m%n