项目原来使用logback作为打印日志框架,添加activemq后,不打印日志了。
启动时tomcat报jar包冲突:
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/E:/apache-tomcat-8.0.47/webapps/webapp2/WEB-INF/lib/activemq-all-5.15.9.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/E:/apache-tomcat-8.0.47/webapps/webapp2/WEB-INF/lib/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
方法一:
想排除activemq-all包的依赖
<!-- activemq依赖包 -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.15.9</version>
<!--排除这两个包-->
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
结果无效,原因是因为日志组件是作为类打包进了activemq-all.jar包里。
方法二:
分别添加activemq的组件
将父pom.xml文件中
<!-- activemq依赖包 -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.15.9</version>
</dependency>
替换为
<!-- activemq依赖包 -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-broker</artifactId>
<version>5.15.9</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-client</artifactId>
<version>5.15.9</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
<version>5.15.9</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-spring</artifactId>
<version>5.15.9</version>
</dependency>
测试可以打印日志了。
注:最新代码上传至https://github.com/csj50/webapp2.git
参考资料:
https://www.slf4j.org/codes.html#multiple_bindings
http://activemq.apache.org/initial-configuration.html#InitialConfiguration-RequiredJARs
https://blog.youkuaiyun.com/Carychengzubin/article/details/53326158