Log4j2每日日志滚动时区异常:巴黎时区未在午夜滚动的解决办法?
解决Log4j2巴黎时间午夜日志滚动问题
问题根源
你当前的配置仅在日志文件名和输出格式中指定了巴黎时区,但TimeBasedTriggeringPolicy的触发逻辑默认使用JVM的默认时区(此处为GMT),导致滚动触发时间不符合预期,这和你提到的LOG4J2-1631问题核心原因一致——触发策略未与指定时区绑定。
修复方案
给TimeBasedTriggeringPolicy添加timeZone属性,明确指定为Europe/Paris,让滚动触发逻辑与目标时区关联。修改后的完整配置如下:
<RollingFile name="rollingFile" fileName="${LOG_DIR}/application.log" filePattern="${LOG_DIR}/application.%d{dd-MMM}{Europe/Paris}.log.gz" ignoreExceptions="false"> <PatternLayout> <Pattern>%d{yyyy-MM-dd HH:mm:ss}{Europe/Paris} %-5p %m%n</Pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy interval="1" timeZone="Europe/Paris"/> </Policies> <DefaultRolloverStrategy max="5" /> </RollingFile>
补充说明
timeZone属性从Log4j2 2.7版本开始支持,请确保你的Log4j2版本不低于此版本。- 若无法升级版本,可临时通过JVM启动参数
-Duser.timezone=Europe/Paris强制全局时区为巴黎时间,但该方式会影响整个应用的时区设置,不推荐作为长期解决方案。
内容的提问来源于stack exchange,提问作者Nicolas Baumann
相关产品推荐
相关产品推荐

