Log4J2(2.17.1)多文件名条件自动删日志失效问题求助
Log4j2 Delete Action多文件名条件不生效的解决方法
你的问题出在properties配置的语法特性上:重复定义PathConditions.type和PathConditions.glob会直接覆盖之前的配置,导致只有最后一个文件名条件生效。要实现多文件名的逻辑或匹配(满足任意一个文件名条件即可),需要用IfAny条件包裹多个IfFileName子条件,同时通过数字索引区分不同子条件。
修正后的配置示例
appender.aokwf.strategy.action.type = Delete appender.aokwf.strategy.action.basepath = D:/logs/ appender.aokwf.strategy.action.maxdepth = 1 appender.aokwf.strategy.action.condition.type = IfLastModified appender.aokwf.strategy.action.condition.age = 1D # 用IfAny组合多个文件名条件,逻辑为"满足任意一个即可" appender.aokwf.strategy.action.PathConditions.type = IfAny # 第一个文件名匹配规则 appender.aokwf.strategy.action.PathConditions.1.type = IfFileName appender.aokwf.strategy.action.PathConditions.1.glob = workflow_logging*.log.zip # 第二个文件名匹配规则 appender.aokwf.strategy.action.PathConditions.2.type = IfFileName appender.aokwf.strategy.action.PathConditions.2.glob = log4j.log.*
关键说明
IfAny类型用于将多个条件组合为逻辑或关系,只要其中一个子条件满足,就会触发文件匹配。- 在properties格式中,多个子条件必须通过**数字后缀(如
.1、.2)**区分,避免键名重复导致的配置覆盖。 - 原配置中直接重复
PathConditions.type的写法,会让后定义的配置完全覆盖前一个,这是properties键值对配置的固有特性。
内容的提问来源于stack exchange,提问作者Athanasios Soulimenas
相关产品推荐
相关产品推荐

