slf4j与log4j混合使用:slf4j: Class path contains multiple SLF4J bindings

信息日志:
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/E:/workspace/XXX/WebRoot/WEB-INF/lib/log4j-slf4j-impl-2.9.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/E:/workspace/XXX/WebRoot/WEB-INF/lib/slf4j-log4j12-1.7.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]

启动有打印上述信息,但是不报错,通过slf4j打印的日志都不在控制台显示,也不写入到日志文件。

问题定位:从日志里看到两个日志jar包冲突了:log4j-slf4j-impl-2.9.1.jar和slf4j-log4j12-1.7.2.jar

解决问题:根据日志给出的jar包路径,删除log4j-slf4j-impl的jar包,重启即可。

### 解决Hive中SLF4J多绑定冲突的方法 当遇到Hive中的SLF4J多个绑定冲突问题时,通常是因为类路径下存在多个不同版本的日志实现库。这会导致运行时错误或日志记录行为不符合预期。 为了消除这些冲突并确保只有一个有效的SLF4J绑定被加载,可以采取以下措施: #### 排查现有依赖关系 通过分析项目的依赖树来识别哪些jar文件引入了额外的slf4j-bindings实例。对于Maven项目来说,可以通过命令`mvn dependency:tree`查看整个构建过程中的所有依赖项及其传递性依赖[^1]。 #### 修改POM文件排除不必要的依赖 如果发现某些第三方库自带了特定版本的slf4j-api或者其他logback/slf4j-log4j12等具体实现,则可以在pom.xml里显式地移除它们: ```xml <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>${hive.version}</version> <!-- Excluding slf4j-log4j12 from hive jdbc --> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> ``` #### 统一日志框架配置 强制统一使用一种日志门面(如Logback),并将其他可能存在的竞争者全部替换掉。这样做的好处是可以集中管理所有的日志输出设置,并且避免因多种logger混用而引发的问题。 #### 清理CLASSPATH环境变量 有时本地开发环境中设定的classpath也可能包含重复的日志组件,因此建议检查并清理这部分配置,只保留必要的部分。 以上方法能够有效处理大多数情况下由于SLF4J多重绑定所引起的兼容性性能方面的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值