Log4j2半每日日志滚动配置失效问题及配置方法咨询
实现Log4j2半每日(12小时)日志滚动的正确配置
好消息,Log4j2完全支持半每日(12小时周期)的日志滚动,你的配置问题主要出在时间触发策略的参数搭配和一处属性引用错误上。下面是修正后的完整配置和细节解释:
修正后的完整配置
status = error name = Proper property.filepath = C\:/xi/doc/home/new/log property.filename1 = ${filepath}/Common.log filter.threshold.type = ThresholdFilter filter.threshold.level = debug appender.console.type = Console appender.console.name = STDOUT appender.console.layout.type = PatternLayout appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %5p [%C].%M %m %n appender.rolling1.type = RollingFile appender.rolling1.name = RollingFile1 appender.rolling1.fileName = ${filename1} # 保留带AM/PM标识的文件模式,区分上下半天 appender.rolling1.filePattern = ${filepath}/Common.%d{yyyy-MM-dd-a}.%i.log.gz appender.rolling1.layout.type = PatternLayout appender.rolling1.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %5p [%C].%M %m %n appender.rolling1.policies.type = Policies appender.rolling1.policies.time.type = TimeBasedTriggeringPolicy # 时间间隔设为1,对应filePattern中12小时的粒度(a标识) appender.rolling1.policies.time.interval = 1 appender.rolling1.policies.time.modulate = true appender.rolling1.policies.size.type = SizeBasedTriggeringPolicy appender.rolling1.policies.size.size = 100MB appender.rolling1.strategy.type = DefaultRolloverStrategy appender.rolling1.strategy.max = 20 appender.rolling1.strategy.delete.type = Delete # 修正basePath为已定义的filepath属性 appender.rolling1.strategy.delete.basePath = ${filepath} appender.rolling1.strategy.delete.maxDepth = 10 appender.rolling1.strategy.delete.ifLastModified.type = IfLastModified # Delete all files older than 1 day appender.rolling1.strategy.delete.ifLastModified.age = 1d # loggers logger.name = common logger.level = debug logger.additivity = false logger.appenderRefs = rolling1 logger.appenderRefs.level = debug logger.appenderRef.rolling1.ref = RollingFile1
关键修改点说明
时间触发策略与文件模式的匹配
- 你的文件模式
%d{yyyy-MM-dd-a}中,a代表AM/PM(12小时周期标识),这已经定义了12小时的滚动粒度。 - 对应的
TimeBasedTriggeringPolicy.interval设为1,表示每隔1个“12小时周期”触发一次滚动;modulate=true会让滚动时间对齐到12小时的起始点(凌晨0点、中午12点),避免出现非整点的滚动时间。
- 你的文件模式
修复删除策略的路径引用
原配置中strategy.delete.basePath = ${basePath}里的basePath未定义,改为已存在的${filepath}才能让旧文件删除策略正常生效。
验证效果
配置生效后,日志会在每天的**0点(AM)和12点(PM)**自动触发滚动;如果单文件大小提前达到100MB,也会触发滚动(SizeBased策略生效)。滚动后的日志文件名会类似Common.2024-05-20-AM.1.log.gz、Common.2024-05-20-PM.1.log.gz,清晰区分上下半天的日志。
内容的提问来源于stack exchange,提问作者user18121839
相关产品推荐
相关产品推荐

