SpringBoot之路SpringBoot极简教程 · Spring Boot

011SpringBoot之日志深入介绍(上)

2018-05-29  本文已影响27人  编程界的小学生

一、日志框架

1、必须要明白

1.1、SLF4J

官网:https://www.slf4j.org

SLF4J(Simple Logging Facade For Java);

是日志的门面,什么叫门面?就是日志的抽象层?再说详细点:就是一个接口规范,类似于JDBC那种,只提供一个门面,谁想要具体的,你们自己各大厂商去实现。比如目前的实现者:logback。

1.2、log4j、logback、log4j2

日志的具体实现,其中log4j和logback是基于SLF4J接口规范进行实现的。

1.3、注意

SLF4J、log4j、logback是一家公司出的。先有的log4j,后来发现性能有问题,在log4j上改造又太麻烦,所以直接重新开发个logback,但是为了规范和以后维护升级,就出了一个规范SLF4J。而log4j2其实只是Apache出的一套日志框架,也很完美。

二、使用和疑难

1、SLF4J关系图

image.png

PS:每一个日志的实现框架都有自己的配置文件,使用slf4j后,配置文件还是做成日志实现框架本身(比如logback)的配置文件。

2、疑难

比如我们现在的框架是SSH,问题来了,如下:

比如我们现在的项目再用slf4j+logback,而Spring用的是commons-logging、Hibernate用的是jboss-logging,这该怎么办呢?我们只想用slf4j+logback


看图:

image.png

这张图很好的说明了彼此之间的关系,若我们要用slf4j+logback,则我们引入三个jar包(slf4j-api.jar/loback-classic.jar/loback-core.jar)即可,我们还用到了Spring,Spring内置了commons-logging,则我们还需要额外引入jcl-over-slf4j.jar,这样我们才能看到Spring的输出日志。这个包相当于桥接一下,或者适配一下。

原理就是:jcl-over-slf4j.jar包会包含他所替代的包(commons-logging)的全部类,并且完美的和slf4j结合,所以就是当spring输出日志调用commons-logging里面的api时,会转发到jcl-over-slf4j.jar这个包里的对应的api方法,然后此包会调用slf4j-api的包,slf4j的调用logback,这样一套流程就通了。就是用桥接包替换老包,桥接包包含老包全部类,并能完美的与slf4j相结合。

3、疑难总结

如何让系统中所有的日志都统一到slf4j;

三、广告

img
上一篇下一篇

猜你喜欢

热点阅读