混乱的各种日志组合情况

本文探讨了在使用SLF4J与Log4j、Logback等日志框架时可能出现的冲突情况,并提供了如何正确配置这些日志框架以避免冲突的具体指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


总结,混乱的各种日志组合情况


log4j, logback,桥接log4j和logback需要的jar包,会造成jar包冲突。
目前也发现实际上的jar包冲突了,一下是会产生冲突的包。


1、slf4j-log4j-<version>.jar:  上层是SLF4J,底层通过log4j实现。
2、slf4j-jcl-<version>.jar: 上层是SLF4J,底层还是通过Commons Logging的动态查找机制。
3、jcl-over-slf4j-<version>.jar:上层是Commons Logging,底层交给SLF4J提供的静态绑定机制查找真正的日志实现框架。(注意:slf4j-jcl和jcl-over-slf4j不能同时出现在classpath)
4、log4j-over-slf4j-<version>.jar: 上层是Log4J,底层交给SLF4J静态绑定要真正实现日志打印的框架。
 
各种冲突情况总结:
1、slf4j-log4j,slf4j-simple不能同时出现,两个jar包都有sl4j的StaticLoggerBindder会冲突。
2、log4j-over-slf4j和log4j不能同时出现,两个jar包都有org.apache.log4j.Logger会冲突。
3、同理,jcl-over-slf4j和common-loggng不能同时出现。
4、slf4j-jcl和jcl-over-slf4j不能同时出现,逻辑上进入无限递归。
 
SLF4J结合Logback


在pom.xml包含下面的依赖:它会自动包含所有的依赖包logback-core、slf4j-api……


<dependency>  
  <groupId>ch.qos.logback</groupId>  
  <artifactId>logback-classic</artifactId>  
  <version>1.0.7</version>  
</dependency>  


SLF4J能用于现有的日志框架如Log4j、Commons-logging、java.util.logging(JUL)。
SLF4J结合Log4j


在pom.xml包含下面的依赖


<dependency>  
  <groupId>org.slf4j</groupId>  
  <artifactId>slf4j-log4j12</artifactId>  
  <version>1.7.2</version>  
</dependency>  


SLF4J结合JUL (java.util.logging)


在pom.xml包含下面的依赖


<dependency>  
  <groupId>org.slf4j</groupId>  
  <artifactId>slf4j-jdk14</artifactId>  
  <version>1.7.2</version>  
</dependency>  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值