SLF4J: Found binding in [jar:file:activemq-all-5.11.1.jar/org/slf4j/impl/StaticLoggerBinder.class]

错误警告如下,导致log4j2不生效,无法打印日志

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/D:/workspace3/demo/target/demo/WEB-INF/lib/activemq-all-5.11.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/D:/workspace3/demo/target/demo/WEB-INF/lib/log4j-slf4j-impl-2.14.1.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]
log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

是因为activemq-all中依赖的slf4j和log4j-slf4j-impl中的冲突了,尝试排除activemq-all中的slf4j无效。

<dependency>
    <groupId>org.apache.activemq</groupId>
	<artifactId>activemq-all</artifactId>
	<version>5.11.1</version>
    <exclusions>
    	<exclusion>
			<artifactId>slf4j-api</artifactId>
			<groupId>org.slf4j</groupId>
		</exclusion>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
    </exclusions>
</dependency>

正确的做法是替换activemq-all包

		<dependency>
			<groupId>org.apache.activemq</groupId>
			<artifactId>activemq-broker</artifactId>
			<version>5.16.3</version>
		</dependency>
		<dependency>
			<groupId>org.apache.activemq</groupId>
			<artifactId>activemq-pool</artifactId>
			<version>5.16.3</version>
		</dependency>
		<dependency>
			<groupId>org.apache.activemq</groupId>
			<artifactId>activemq-spring</artifactId>
			<version>5.16.3</version>
		</dependency>
		<dependency>
			<groupId>org.apache.activemq</groupId>
			<artifactId>artemis-jms-client</artifactId>
			<version>2.19.0</version>
		</dependency>

我的项目spring版本比较低,不能和activemq-broker5.16.3适配,后来改成了5.15.4可以了

解决SLF4J冲突的一种更合理的方法是通过排除不需要的SLF4J依赖项来明确指定使用的绑定。 在你的项目的依赖配置文件(例如`pom.xml`)中,你可以使用`<exclusions>`元素来排除特定的SLF4J依赖项。以排除`activemq-all`中的SLF4J绑定为例,你可以尝试以下配置: ```xml <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>5.9.1</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> <exclusion> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> </exclusion> </exclusions> </dependency> ``` 上述配置将排除`activemq-all`依赖项中的`slf4j-log4j12`和`logback-classic`。这样,只有其他依赖项中的SLF4J绑定会被使用。 请确保在排除依赖项时谨慎操作,以免影响其他模块或功能。如果其他模块需要使用`activemq-all`中的SLF4J绑定,请考虑其他解决方案,如升级或调整依赖版本。 此外,你还可以检查项目的其他依赖项,并确保只有一个SLF4J绑定存在。如果有多个绑定存在,你可以选择保留其中一个,并将其余的排除掉。 总之,通过明确指定使用的SLF4J绑定,并排除不需要的依赖项,可以更合理地解决SLF4J冲突问题。如果问题仍然存在,请提供更多关于你的项目、依赖库以及使用的构建工具和运行环境的信息,以便更准确地帮助你解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值