Log4j2 RollingFile:在当前日志文件中使用今天的日期(刷新fileName)

时间:2019-06-25 15:24:28

标签: java log4j2

我有一个使用log4j的Web服务,并将其升级为使用log4j2,因此我可以利用log4j2可以为您删除旧的日志日期日志文件的方式,而log4j则不能。

日志以 /my_log_root/yyyyMMdd/myservice.log 模式存储。相关的log4j.properties配置如下所示:

log4j.appender.RollingAppender=org.apache.log4j.rolling.RollingFileAppender
log4j.appender.RollingAppender.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
log4j.appender.RollingAppender.RollingPolicy.FileNamePattern=/my_log_root/%d{yyyyMMdd}/myservice.log

这很好用,只是从未删除旧日志文件。现在在log4j2中,属性文件如下所示:

property.basePath = /my_log_root/

appender.rolling.type = RollingFile
appender.rolling.fileName= ${basePath}/${date:yyyyMMdd}/myservice.log
appender.rolling.filePattern= ${basePath}/%d{yyyyMMdd}/myservice.log

appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = true
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.delete.type = Delete
appender.rolling.strategy.delete.basePath = ${basePath}
appender.rolling.strategy.delete.maxDepth = 3
appender.rolling.strategy.delete.ifLastModified.type = IfLastModified
appender.rolling.strategy.delete.ifLastModified.age = 30d

使用此属性文件,将删除旧的日志文件(保留空白目录,但这还不错)。

唯一的问题是当前天数日志。一旦计算出文件名,log4j2似乎就永远不会刷新它。例如,当我于2019-06-21重新启动该服务时,它将文件正确写入了 /my_log_root/20190621/myservice.log 中。但是,现在几天之后,它仍将当前日志写入 /my_log_root/20190621/myservice.log 。一天结束时,它将把日志旋转到适当的日期目录,然后开始将新日志写入21号。

是否可以使log4j2每天刷新其当前日志位置,还是不支持此操作?

0 个答案:

没有答案