log4j2滚动删除丢日志的问题排查

Posted xuzhujack

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了log4j2滚动删除丢日志的问题排查相关的知识,希望对你有一定的参考价值。

    最近排查线上问题,遇到几次线上日志从凌晨0点到全天的某一个随机的时刻日志丢失了,如图所示,打开每天的第一个文件不是从0点开始的日志,莫名其妙的丢失一部分日志。

技术图片

   项目是spring-boot项目,日志的组件是log4j2

version=1.5.12.RELEASE
groupId=org.springframework.boot
artifactId=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"/>,在一定程序上也会侧面解决这个问题









 


 

 

以上是关于log4j2滚动删除丢日志的问题排查的主要内容,如果未能解决你的问题,请参考以下文章

Log4j2中RollingFile的文件滚动更新机制

网卡丢包问题排查即路由添加删除

springboot应用程序不打印Info日志

springboot应用程序不打印Info日志

SpringBoot2.0 基础案例(02):配置Log4j2,实现不同环境日志打印

SpringBoot2.0 基础案例(02):配置Log4j2,实现不同环境日志打印