本文主要是介绍缺少Log4j依赖导致应用启动失败的教训,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近,公司在做版本升级,所有对aaa(指代某个内部依赖)有依赖的应用需要排除掉。从这点看,几乎不会有什么问题,因为仅仅是排除一些maven依赖而已嘛。但是,一位同学在排除依赖的时候,仅仅是把aaa排除了,而没有在测试环境进行测试,在线上发布的时候,日志报dubbo服务注册失败(抛异常和dubbo admin没有看到注册的服务),导致应用启动失败(回滚后正常),影响正常业务5分钟。
事后排查这个问题的时候发现,有两个原因导致了应用启动失败:
- 去除aaa依赖后,导致应用有多个slf4j的依赖
- 去除aaa依赖后,导致log4j依赖缺失(应用使用logback)
第一点很好解决,因为从error日志可以直接知道原因,修改pom依赖并把非logback实现的日志依赖排掉就好了。
但是,第二点折腾了一下午才最终确定是因为log4j依赖缺失导致的。
下面把排查过程记录如下:
把应用回滚后正常,那么问题肯定出在回滚之后的提交上,经过和正常版本的代码的diff,发现只有zkclient的版本不同。异常版本的依赖是如下:
<dependency><groupId>com.github.sgroschupf</
这篇关于缺少Log4j依赖导致应用启动失败的教训的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!