<!--常用 slf4j适配器 ,适配器中自带具体实现
只能适配一个!!!!!!-->
<!--适配log4j -->
<dependency>
<artifactId>slf4j-log4j12</artifactId>
<groupId>org.slf4j</groupId>
<version>1.7.32</version>
</dependency>
<!-- 适配log4j2 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.14.1</version>
</dependency>
<!--适配logback(sring boot 默认) -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.9</version>
<scope>compile</scope>
</dependency>
<!--适配jul,jcl不常用略 -->
<!--桥接模式 如果其它项目用的 是 log4j jcl jul,我们又不想改以前的代码或者不能改,就可以将
log4j jcl jul 重定向到slf4j上
-->
<!--桥接 log4j转到slf4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>1.7.30</version>
</dependency>
<!--桥接 jcl转到slf4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.28</version>
</dependency>
<!--桥接 jul转到slf4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>1.7.30</version>
</dependency>
-->
问题
1.注意死循环
例:如果slf4j 适配了log4j ,log4j又重定向到slf4j,就会死循环
2.只能存在一个适配器
例:如果项目1是 slf4j适配log4j
项目2 是 slf4j适配log4j2,引入了项目1,就会报错: Class path contains multiple SLF4J bindings.
这时候将 找到项目1 中的 slf4j适配log4j 的地方 排除<exclusion>即可
3.多个版本log4j可能有冲突
例:项目1中使用 slf4j适配log4j的适配器,指定适配的log4j版本为1.27
而我们使用的log4j版本为1.26,则会报错
正常适配器中都会引入对应的日志实现,无需我们重复引入,
常出现这个问题可能是引入的项目2中的log4j版本与我们引入的适配器版本不一致,
需要排除<exclusion>别的项目中的log4j
建议
新项目使用slf4j门面
适配 log4j2 或 logback