下面的 log4j2 配置无法删除我的旧文件。
# Rolling file appender
log4j2.appender.rolling.type = RollingRandomAccessFile
log4j2.appender.rolling.name = RollingFile
log4j2.appender.rolling.fileName = ${karaf.data}/log/karaf.log
log4j2.appender.rolling.filePattern = ${karaf.data}/log/karaf-%d{yyyy-MM-dd-HH-mm}-%i.log.zip
# uncomment to not force a disk flush
# log4j2.appender.rolling.immediateFlush = false
log4j2.appender.rolling.append = true
log4j2.appender.rolling.layout.type = PatternLayout
log4j2.appender.rolling.layout.pattern = ${log4j2.pattern}
log4j2.appender.rolling.policies.type = Policies
log4j2.appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
log4j2.appender.rolling.policies.time.interval = 1
log4j2.appender.rolling.policies.time.modulate = true
log4j2.appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
log4j2.appender.rolling.policies.size.size = 5MB
log4j2.appender.rolling.strategy.type = DefaultRolloverStrategy
log4j2.appender.rolling.strategy.fileIndex = nomax
# uncomment to set max number of files to create per day
# log4j2.appender.rolling.strategy.max = 10
log4j2.appender.rolling.strategy.action.type = Delete
log4j2.appender.rolling.strategy.action.basePath = ${karaf.data}/log
log4j2.appender.rolling.strategy.action.maxdepth = 1
log4j2.appender.rolling.strategy.action.condition.type = IfFileName
log4j2.appender.rolling.strategy.action.condition.glob = karaf-*.log.zip
log4j2.appender.rolling.strategy.action.condition.nested_condition.type = IfLastModified
log4j2.appender.rolling.strategy.action.condition.nested_condition.age = 5m
我的日志文件按照基于时间和基于大小的策略的设置正确生成,但我无法弄清楚为什么这些文件没有被删除。一切似乎都是正确的,我的日志中没有收到任何错误。
我没有前导或尾随空格。
我浪费了很多时间来调试这个。官方的 log4j2 文档很糟糕,因为它没有提供基于 java 属性的配置示例。
关于如何解决这个问题有什么想法吗?
谢谢
最佳答案
通过更改使其工作:
log4j2.appender.rolling.strategy.action.condition.glob = karaf-*.log.zip
至
log4j2.appender.rolling.strategy.action.condition.glob = *.zip
看起来旧的正则表达式模式没有被正确解释,这非常奇怪,因为它绝对是正确的。
关于java - Log4j2 基于 java 属性的配置不删除旧文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57879691/