起因
项目中的日志框架使用了log4j2+slf4j的组合进行日志输出
log4j2配置的是RollingRandomAccessFile的滚动日志,设置了60天过期,可是并没有在30天后清除30天前的日志文件,导致了准生产环境中的磁盘存储空间预警报警;
排查
首先拿出其中info日志的配置进行排查
<RollingRandomAccessFile name="FILE-INFO"
fileName="${baseDir}/life-wrangler-info.log"
filePattern="${baseDir}/life-wrangler-info.log.%d{yyyy-MM-dd}">
<ThresholdFilter level="info" onMatch="ACCEPT"
onMismatch="DENY"/>
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %X{client_ip} [%t] %-5level [%logger{50}:%L] - %ddmsg%xEx{1}%n"
charset="UTF-8"/>
<TimeBasedTriggeringPolicy interval="1"/>
<DefaultRolloverStrategy max="1">
<Delete basePath="${baseDir}" maxDepth="2">
<IfFileName glob="*life-wrangler-info.*.log"/>
<IfLastModified age="60d"/>
</Delete>
</DefaultRolloverStrategy>
</RollingRandomAccessFile>```
1、首先是想到配置文件中是否配置错误了滚动日期,检查之后确认配置的是60d,配置时间错误的可能性排除;
2、考虑到d的大小写是否可能有影响,也进行了D和d的切换尝试,结果并无区别,大小写影响的可能性排除;
3、查阅网上资料后,得知log4j2,在DefaultRolloverStrategy节点配置的IfFileName匹配规则是需要RollingRandomAccessFile的filePattern属性配置含有%i这一项的,于是补充了%i之后就解决了
分析
待续
参考资料
https://www.cnblogs.com/yeyang/p/7944899.html
https://blog.csdn.net/CringKong/article/details/103483043