场景
依赖
。。。
代码
public class ApiTest {
private final Logger logger = LoggerFactory.getLogger(ApiTest.class);
@Test
public void test(){
logger.info("Lasse到此一游");
}
}
不尽人意的结果:没有任何输出
网上找了一堆文章都无法解决,最后只能自己手撕源码了。
问题点
方法:org.slf4j.LoggerFactory.getILoggerFactory();
找错思路
可以看到我明明导入了logback-classic依赖,它却使用了slf4j-log4j12
又在网上搜索了找了一下有没有指定使用特定依赖包下的StaticLoggerBinder,结果无。
又想到是否根据依赖导入的顺序,当机立断去看哪个依赖导入了slf4j-log4j12
最后找到了是org.apache.zookeeper引用了slf4j-log4j12
解决方法
LoggerFactory是根据加载顺序指定使用哪个依赖下的StaticLoggerBinder的。
所以调整依赖的顺序。
将logback-classic顺序放到依赖的最上方
结果查看
使用理想中的依赖
方法:org.slf4j.LoggerFactory.getILoggerFactory();
可以看到它用到了logback-classic下的StaticLoggerBinder类
控制台输出
总结
今后除了关注依赖冲突,版本冲突还有多加一项依赖的加载顺序。
相关文章
发表评论