引入sentinel导致的multiple slf4j bindings问题
在项目添加sentinel依赖后,可能会遇到multiple slf4j bindings报错。这是由于项目中可能存在多个slf4j实现导致。一般情况下, 添加如下依赖排除即可解决问题:
<dependency> <groupid>com.alibaba.cloud</groupid> <artifactid>spring-cloud-starter-alibaba-sentinel</artifactid> <version>2.2.9.release</version> <exclusions> <exclusion> <groupid>org.slf4j</groupid> <artifactid>slf4j-log4j12</artifactid> </exclusion> </exclusions> </dependency>
然而,有时添加exclusion也不一定能解决问题。这可能是因为项目中存在其他依赖引用了slf4j-log4j12.jar,导致在运行时仍然加载了该jar包。可以尝试以下解决方法:
- 检查依赖树:使用maven依赖树检查命令mvn dependency:tree,查看是否存在其他依赖引入了slf4j-log4j12.jar。
- 强制排除slf4j-log4j12:在pom.xml中添加如下依赖:
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version> <scope>provided</scope> </dependency>
- 升级sentinel版本:升级sentinel版本到2.3.0以上,该版本已解决multiple slf4j bindings问题。