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

最近排查线上问题,遇到几次线上日志从凌晨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"/>,在一定程序上也会侧面解决这个问题



 

原文地址:https://www.cnblogs.com/xuzhujack/p/12554409.html

时间: 2024-10-09 12:01:34

log4j2滚动删除丢日志的问题排查的相关文章

删除online日志测试及ora-600 [4194]错误的处理

今天做了一个关于破坏online日志的恢复测试,主要三个场景: 测试1:正常关闭数据库后删除非当前日志 测试2:正常关库后,删除在线日志文件 测试3:非正常关闭数据库,并删除当前在线日志文件 我的测试环境是Oracle 10.2.0.1 32bit的数据库,OS版本为red hat 5.3,下面看具体测试经过: 测试1:正常关闭数据库后删除非当前日志 [[email protected] ~]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 -

Log4j2中的同步日志与异步日志

1.背景 Log4j 2中记录日志的方式有同步日志和异步日志两种方式,其中异步日志又可分为使用AsyncAppender和使用AsyncLogger两种方式. 2.Log4j2中的同步日志 所谓同步日志,即当输出日志时,必须等待日志输出语句执行完毕后,才能执行后面的业务逻辑语句. 下面通过一个例子来了解Log4j2中的同步日志,并借此来探究整个日志输出过程. log4j2.xml配置如下: <?xml version="1.0" encoding="UTF-8"

删除online日志測试及ora-600 [4194]错误的处理

今天做了一个关于破坏online日志的恢复測试,主要三个场景: 測试1:正常关闭数据库后删除非当前日志 測试2:正常关库后.删除在线日志文件 測试3:非正常关闭数据库.并删除当前在线日志文件 我的測试环境是Oracle 10.2.0.1 32bit的数据库,OS版本号为red hat 5.3,以下看详细測试经过: 測试1:正常关闭数据库后删除非当前日志 [[email protected] ~]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0

delete archivelog all 无法彻底删除归档日志?

最近在因归档日志暴增,使用delete archivelog all貌似无法清除所有的归档日志,到底是什么原因呢? [python] view plain copy print? 1.演示环境 SQL> select * from v$version where rownum<2; BANNER ---------------------------------------------------------------- Oracle Database 10g Release 10.2.0.

linux常用命令 、查看日志、web排查

linux常用命令 ps aux|grep xxx (比如 ps aux|grep tomcat ps aux|grep tomcat-portalvip ps aux|grep nginx 等) rpm -qa|grep xxx (查找系统有没有安装 比如 rpm -qa|grep mysql rpm -qa|grep MySQL rpm -qa|grep jdk 等) 强制卸载 rpm -e 上一步查找结果的内容 --nodeps 查看端口是否被占用 netstat -an|grep 端口

rsyslog center诡异丢日志问题分析解决

一,问题情景: 我们有多台apache server,apache上的access log会通过rsyslog client传送给rsyslog center汇总并展示给用户.最近一段时间,有多个用户反馈自己的access log不全,有丢失的现象. 二,查找原因及解决办法: 1,部署监控 我们给一个rsyslog center做了一个监控,每2min钟curl 5次指定的url,然后看rsyslog center是否出现此log,把每2min的丢失数量展示在graphite中.以便于我们对日志

删除数据库日志文件的方法

原文:删除数据库日志文件的方法 你曾经有在执行SQL的时候,数据库报事务日志已满,然后执行报错.然后纠结于怎么删除数据库日志,捣鼓半天吗,现在就提供两种删除日志文件的方法,希望能够帮到你! 阅读目录 方法一:手工操作 方法二:存储过程代替手工操作 示例存储过程下载 回到顶部 方法一:手工操作   1.数据库->右键->属性->选项-恢复模式->由完成切换成简单   2.数据库->右键->任务->收缩-文件->由完成切换成简单->文件类型->日志-

db_recovery_file_dest_size 修改大一点及删除归档日志 |转|

今天给客户测 试问题,让客户把数据发过来了.解压缩后一看,他们还是用的oracle 815版本的(他们exp导出时,带了导出日志,从导出日志中看出来是oracle 815版本的),不过没有关系,低版本的exp是可以用高版本的imp导入到高版本数据库中的.一看是导入还很正常,导入到其中某个表的时候,突然就不动 了.一开始我还没有弄明白怎末回事.后来,无意中看到了 计算机管理--事件查看器中 ,有很多报错信息: Archive process error: ORA-16038: log 1 sequ

mysql删除二进制日志文件

一.RESET MASTER 这个语句可以验证首次配置主机备机是否成功.步骤如下: 1. 启动master和 slave,开启replication (即 复制) 注:replication (复制) 也是mysql一个重要的技术 2.运行一些测试的语句看数据是否能够复制到 slave上面 3.当复制运行正常的话,就 stop slace 然后在slave上面执行 reset slave,去掉不需要的数据 4.在master上面执行reset master 去掉2中产生的数据 可以删除列于索引文