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

作者: 编程界的小学生 | 来源:发表于2018-05-29 13:07 被阅读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;

    • 1、将系统中其他日志框架先排除出去
    • 2、用中间包来替换原有的日志框架
    • 3、我们导入slf4j其他的实现

    三、广告

    • QQ群【Java初学者学习交流群】:458430385

    • 微信公众号【Java码农社区】

    img
    • 今日头条号:编程界的小学生

    相关文章

      网友评论

        本文标题:011SpringBoot之日志深入介绍(上)

        本文链接:https://www.haomeiwen.com/subject/sqaojftx.html