CXC0 2020-03-23
最近排查线上问题,遇到几次线上日志从凌晨0点到全天的某一个随机的时刻日志丢失了,如图所示,打开每天的第一个文件不是从0点开始的日志,莫名其妙的丢失一部分日志。
项目是spring-boot项目,日志的组件是log4j2
version=1.5.12.RELEASEgroupId=org.springframework.bootartifactId=spring-boot-starter-log4j2排查过程:1、服务器的contab删除日志的脚本,后来经排查分析否则。2、推测分析可能是回滚删除日志的log4j2配置有问题,经过查log4j2的源码及配置和线上日志的现象对比分析。问题的根源:LOG4J2 默认对压缩文件只保留7个文件数量.Once this values is reached older archives will be deleted on subsequent rollovers. The default value is 7.官网:http://logging.apache.org/log4j/2.x/manual/appenders.html
解决方案:
找到原因,接下来的事就好办了,
1、在RollingFile 节点下的DefaultRolloverStrategy增加max属性,比如:<DefaultRolloverStrategy max=“50”>解决。
2、把回滚文件的大小增大,比如<SizeBasedTriggeringPolicy size="2GB"/>,在一定程序上也会侧面解决这个问题