Log关系
一 概述
1.1 常用的框架
jul (java.util.logging):jdk官方日志框架
log4j:基于淘汰,没有更新了
log4j2(Apatch):性能优于log4j
logback:性能优于log4j
1.2 常用的门面
(概念:不实现日志功能,整合日志的)
JCL:jakarta commons logging官方
slf4j:性能高于JCL,与logback日志框架源自一个作者
PS:流行log4j2 + slf4j 或 logback + slf4j(开销最小,最优)
1.3 门面的依赖
<!--slf4j门面核心依赖-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
<!--JCL门面依赖-->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
1.3 适配器和桥接器
适配器:
(概念:当项目使用了两种日志框架,可以使用适配器进行统一)
例:一个项目同时使用了jul+JCL和 log4j+slf4j的日志框架,现在需要统一,即可以将jul或者JCL通过导入适配
器依赖的形式,整合到slf4j上面来实现。
桥接器:
(概念:日志框架要在日志门面使用的桥梁)
也就是说,当引入了logback日志框架和slf4j日志门面的maven依赖后,还需要引入对应的桥接器依赖,才能
使日志运行。
桥接器只能有一个(slf4j只能运行一个)。
1.3.1 适配器
jar包名 | 说明 | 实现日志 |
---|---|---|
log4j-over-slf4j.jar | 将Log4j重定向到Slf4j | log4j |
log4j-to-slf4j.jar | 将Log4j2重定向到Slf4j | log4j2 |
jcl-over-slf4j.jar | 将Commons Logging里的Simple Logger重定向到Slf4j | jcl |
jul-to-slf4j.jar | 将Java Util Logging重定向到Slf4j | jul |
1.3.2 适配器的依赖
<!--日志统一,将logf4j转到slf4j,添加logf4j-slf4j适配器-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>2.0.2</version>
</dependency>
<!--日志统一,将logf4j2转到slf4j,添加logf4j2-slf4j适配器-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
<version>2.12.1</version>
</dependency>
<!--日志统一,将JCL转到slf4j,添加JCL-slf4j适配器--&