Log4J2日志配置问题排查:figleaf滚动失效与LOGFILE1命名异常
Log4J2 配置问题分析与解决方案
一、figleaf 日志无法每2小时滚动的原因及修复
你的figleaf日志配置中,filePattern的日期格式包含空格是导致无法按2小时滚动的核心问题:
appender.figleaf_inboundevent.filePattern = logs/figleaf_inboundevent-%d{yyyy-MM-dd HH}.log.%i
Log4J2解析%d时间模式时,空格会干扰时间粒度的识别,导致TimeBasedTriggeringPolicy无法正确识别"小时"作为滚动单位,进而无法按配置的2小时间隔触发滚动。
修复步骤:
将filePattern中的空格替换为连字符或下划线,确保时间格式无干扰字符:
appender.figleaf_inboundevent.filePattern = logs/figleaf_inboundevent-%d{yyyy-MM-dd-HH}.log.%i
同时保留原有的TimeBasedTriggeringPolicy配置(interval=2、modulate=true),modulate=true会让滚动时间对齐到2小时的整数倍(如00:00、02:00等),保证滚动的规律性。
二、LOGFILE1 重启后无日期小时后缀的原因及修复
LOGFILE1的配置中缺少启动时触发滚动的策略,导致应用重启后直接写入logs/LOGFILE1.log,不会自动将原有文件重命名为带后缀的格式。
修复步骤:
在LOGFILE1的policies节点下添加OnStartupTriggeringPolicy配置,启动时自动触发日志滚动:
appender.LOGFILE1.policies.startup.type = OnStartupTriggeringPolicy appender.LOGFILE1.policies.startup.minSize = 0
配置后,应用重启时会将现有的LOGFILE1.log重命名为LOGFILE1-yyyy-MM-dd.log.1(符合filePattern格式),然后创建新的LOGFILE1.log用于后续日志写入。
验证说明
- 修改配置后,重启应用,观察figleaf日志是否会在每2小时的整数倍时间点触发滚动;
- 重启应用后,查看logs目录下是否生成带日期后缀的LOGFILE1历史文件,新日志是否写入无后缀的主文件。
内容的提问来源于stack exchange,提问作者Configueroa
相关产品推荐
相关产品推荐

