记录一次日志打印错误,日期错乱的排坑过程

现象:

本地日志配置采用log4j,配置文件如下:

正常日志打印应该是:今天info日志打在server.log里,到第二天,假如是2019-07-30,昨天的日志应该重命名为server.log.2019-07-29,今天日志照常打印在server.log里

然而,诡异的是,2019-07-30当天的线上日志打印在了2019-07-29,而2019-07-29日的日志归档到了server.log.2019-07-28

让人摸不着头脑的是,我项目里明明没有配置过 server.2019-07-29这种格式,server.error这种格式

在本地、测试服务器多次测试打印也没有复现这种现象,而且线上机器重启后又是正常的,问题出在每天凌晨分割日志时

我一直怀疑是见鬼了,难道是机器的问题??于是耽搁了几天。。

后来运维催的急,把线上的包down下来后发现我的包里有两个日志配置文件:logback.xml与log4j.xml

打开logback.xml文件终于知道线上日志打印的原因了

最后定位到这个包是我项目里依赖的一个第三方包里生成的,问题也是我7月24号上线引入这个包后才发生的

知道原因之后,就好解决了,找生成包的提供者,让它打包时把logback.xml这个配置文件给排除掉就好了

 

总结:

1.引用第三方包时,很容易出现包冲突问题,毕竟很多基础的包都是互相依赖的。同时,之前一直忽略的,引用包时要注意有没有配置文件,以防和自己的配置文件冲突

2.排查问题时,需要不断追究问题本质。比如我一直觉得我的日志配置没有问题,而且线上也没有改动过,上线的都是业务代码,应该没啥影响。。万万没想到,果然还是新上线代码引入的jar包引起的,所以对比代码,思考区别和联系很重要

3.至于为什么线上会优先读取logback.xml,,logback和log4j有什么区别和联系,这个还有待深入了解,或者有大佬看到后能解释下

 

 

 

 

 

 

 

 

 

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值