一、Why
记录程序的运行轨迹,方便查找关键信息,也方便快速定位解决问题。
二、What
市面上的日志框架
日志门面(日志的抽象层) | 日志实现 |
JCL(Jakarta Commons Logging) SLF4j(Simple Logging Facade for Java) jboss-logging | Log4j JUL(java.util.logging) Logback |
一般日志都是由左边一个日志门面和右边一个日志实现来组成的。
发展历程:
三、How
SLF4J使用:
以上几种绑定可以无缝切换,不需要改动内部代码,无论哪种绑定,都得依赖slf4j-api.jar
适配器绑定需要具体的日志框架:
log4j:绑定slf4j-log4j12-1.7.21.jar,依赖log4j.jar
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
j.u.l:绑定slf4j-jdk14-1.7.21.jar,依赖j.u.l(java runtime提供)
适配器的直接实现:
logback-classic依赖logback-core提供底层功能
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.7</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.7</version>
</dependency>
slf4j-simple则不依赖其它库.
日志框架之间的切换:
参考博客链接:
https://blog.csdn.net/pengjunlee/article/details/80249915
http://www.cnblogs.com/jingmoxukong/p/5910309.html?%E2%80%83%E2%80%83hmsr=toutiao.io