SLF4Jjar包冲突: Class path contains multiple SLF4J bindings.
今天写sparkstreaming项目的时候遇到的问题,我配置了日志,设置的是error级,但是没有起作用.
错误原因:
因为我引入了springboot,而springboot下面logback-classic 包和spark下的slf4j-log4j12 包,关于org/slf4j/impl/StaticLoggerBinder.class 这个类发生了冲突。
发生这个错误的原因,首先logback 日志的开发者和log4j 的开发者据说是一波人,而springboot 默认日志是,较新的logback 日志。但是在以前流行的日志却是log4j ,而且很多的第三方工具都含有log4j 得引入。
而我们在项目开发中,难免会引入各种各样的工具包,所以,基本上springboot 项目,如果不注意,肯定会出现这种冲突的。
问题隐患:
当然最关心的是它是否有隐患,如果你在开发工具中运行,对,没毛病,一般会正常启动。
经过我使用情况中的观察,貌似springboot 配置成tomcat运行 ,即修改成war 包之后,一般这个警告没有什么影响;但是如果是传统的jar 包,尽管你在开发工具中能正常运行,也可能在打完包之后不能运行。
问题解决:
问题解决办法很简单,就是既然抛了jar包冲突 ,那我们就排除一个jar 包即可。关键是排除哪一个jar包 ,这里注意下了,如果你用的是logback 日志,一定要排除slf4j-log4j12 包,不要排除logback-classic 包,如果你用的是log4j12 的包就排除logback-classic 包。
我这里排除的是logback-classic 包
排除slf4j-log4j12 包可以看下这里:
springboot 关于 Class path contains multiple SLF4J bindings.警告的解决.