lsf4j jar包依赖 引起日志打印不出来的问题

    最近在搭建应用测试环境的时候遇到一个问题,应用搭建不起来,而且spring框架的日志都没有打印出来,根据jetty日志可以看出,问题出在日志上面,在网上搜索了相关的资料,了解到log4j、slf4j以及logback的相互影响如下:

lsf4j jar包依赖 引起日志打印不出来的问题_第1张图片

          根据上图所示,slf4j-api绑定slf4j-logj12可以输出log4j日志,slf4j-api与logback绑定会输出logback日志。当三个包同时存在的情况下,会出现多种可能性,因为这两个jar 包里都有各自的org.slf4j.impl.StaticLoggerBinder ,编译时候绑定的是哪个是不确定的,取决于classloader先加载到了哪个StaticLoggerBinder

          检查了我应用里的依赖,发现同时依赖了slf4j-api、slf4j-logj12、以及logback,修改pom依赖,去掉logback,同时又更新了slf4j的版本,文件成功打印出来。后续会详细研究一下相关的源代码。

 

附:

检查依赖的方法:

mvn dependency:tree > dep.txt  输出依赖树

jar xvf xxx.war 将war包解压

jar cvf xx.war xx 将xx文件夹中的jar包压缩到xx.war包中

tree xx >>xx.txt 将xx文件夹中的文件目录打印到xx.txt中

fc a.txt b.txt 比较两个文件是否相同

         通过上面几个命令,可以检查一下pom文件修改前和修改后,war包中依赖的jar包有哪些不同,检查依赖树哪里引入了出错的jar包,可以方便查找问题和修复。

 

你可能感兴趣的:(jar包)