现在JAVA的日志框架分为抽象层和实现层,因为当日志升级时无需改动代码即可。
| 抽象层 | 介绍 |
|---|---|
| JCL(Jakarta Commons Logging) | 是Spring默认的日志框架,Jakarta是Apache旗下的一个小组,所以在使用Spring时需要引入Apache commons-logging.jar包。2014后不再维护,所以不推荐使用。 |
| SLF4j (Simple Logging Facade for Java) | 推荐使用 |
| jboss-logging | 特定框架使用,一般使用较少 |
| 实现层 | 介绍 |
|---|---|
| jul(java.util.logging) | JAVA原生的日志框架,不推荐使用。 |
| log4j | 常用的日志实现层,但是存在性能问题,现在已较少使用。 |
| logback | 与log4j是相同的作者,是log4j的升级,推荐使用。目前spring-boot默认使用slf4j的抽象层结合logback的实现层组合。 |
| log4j2 | Apache旗下提供的日志实现层,功能强大,目前与其他框架整理不是太广泛 。 |
我们在使用日志框架时需要采用抽象层和实现层的组合来使用,目前推荐slf4j的抽象层结合logback的实现层来使用。
进入SLF4J的官网https://www.slf4j.org/manual.html,可以查看如下整合图片(翻译版)。

如图可知,slf4j结合logback使用时需要引入的依赖有:
当一个项目中需要引入其他第三方依赖,且第三方依赖所使用的日志框架与本系统不一致时如何整合呢?如Spring使用的时jcl,SpringBoot使用的slf4j。

根据图中的第一点我们知道,要采用slf4j结合logback的方案,且第三方依赖存在jcl(springboot整合spring),除了本身需要的:
之外还需要引入
其他整合方式见图片即可。