log4j日志实现重复警告slf4j-log4j12和log4j-slf4j-impl

因为各种三方库依赖的log4j实现不同,所以可能会出现找到多个log4j实现的警告,但是不影响程序(logback是会影响的),如下:

SLF4J: Class path contains multiple SLF4J bindings.  
SLF4J: Found binding in [jar:file:/D:/software/slf4j-log4j12-1.7.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]  
SLF4J: Found binding in [jar:file:/D:/software/log4j-slf4j-impl-2.4.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]

  这通常是因为同时包含了slf4j-log4j12和log4j-slf4j-impl,所以去掉slf4j-log4j12,保留log4j-slf4j-impl即可

 

分析:

  • 在开发环境,先加载的是 log4j-slf4j-impl,后加载的是slf4j-log4j12。而生产环境,先加载的是 slf4j-log4j12,后加载的是log4j-slf4j-impl。
  • 通过查阅官方资料发现slf4j在绑定时,如果有多个可以绑定的包, SLF4J选择绑定的方式由JVM确定,并且出于所有实际目的应该被认为是随机的
  • 但是,经过我12次在slf4j源码打断点测试发现slf4j优先绑定先加载的jar包。所以在开发环境slf4j绑定的是log4j-slf4j-impl这个jar包,而在生产环境中绑定的是slf4j-log4j12这个jar包。
  • 通过查阅log4j2官方资料可知,slf4j集成log4j2时需要的桥接包是 log4j-slf4j-impl开发环境中slf4j绑定是正确的,因此可以打印日志。而生产环境中slf4j绑定的jar包是slf4j-log4j12。所以生产环境输出不了日志。产生这个问题的根本原因是lib里面有多个了slf4j可绑定的jar包。

小结:

使用SLF4j+Log4j2时使用的桥接包是log4j-slf4j-impl, 当有多个SLF4j的桥接包时,一定要排除不需要的包

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
log4j-to-slf4j 和 jul-to-slf4j 都是用于将不同日志框架(log4j和JUL)的日志转发到slf4j的桥接器。它们的作用是在项目中统一使用slf4j接口进行日志记录,而不需要直接使用特定的日志框架。简单来说,它们是用来解决日志框架的兼容性问题的。 引用提到了一个错误信息,即log4j-slf4j-impl 不能与log4j-to-slf4j 同时存在。这是因为log4j-slf4j-impllog4j框架的一个实现,而log4j-to-slf4j是将log4j框架转发到slf4j的桥接器。因此,当同时存在这两个包时会造成冲突。 综上所述,log4j-to-slf4j 和 jul-to-slf4j都是用于桥接不同日志框架到slf4j的工具,用于统一日志记录接口。在使用过程中需要注意避免与其他框架的冲突,比如log4j-slf4j-impl。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [log4j-slf4j-impl cannot be present with log4j-to-slf4j](https://blog.csdn.net/Master_Shifu_/article/details/125925944)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [slf4j log4j log4j-over-slf4j self-log4j12](https://blog.csdn.net/song854601134/article/details/130624626)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值