美文网首页Log日志
日志 log4j logback log4j2 slf4j jd

日志 log4j logback log4j2 slf4j jd

作者: CallMe兵哥 | 来源:发表于2019-04-11 10:48 被阅读0次

    说到日志,不得不提一下Ceki Gülcü,这个牛逼到爆的程序员十分的犀利,因为 log4j、logback,log4j2,slf4j 都是他写的,log4j在前些年有多牛逼,这个就不用我说了(log4j之前差点成为SUN公司JDK中的一部分),现在logback是spring boot默认的日志框架,log4j2是目前性能最好的日志框架。Ceki 这个牛逼的程序员,真是我崇拜的大神。
    slf4j又是什么呢?其实是当时日志的框架有很多,不仅有log4j还有jdk-logging等其他日志框架,Ceki 觉得我怎么不再写个抽象层,把这些日志实现都屏蔽?然后这个大佬,就写了一层日志的抽象层框架,就是slf4j的起源。

    各种日志包介绍

    1、log4j
    • log4j:log4j1的全部内容,2012年5月更新的1.2.17为最新版,相当多的旧系统现在依然使用。
    2、logback
    • logback-core:是基础模块,为日志的基础。
    • logback- classic:是log4j的一个 改良版本。此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。
    • logback-access:访问模块与Servlet容器集成提供通过Http来访问日志的功能。
    3、log4j2

    官网:https://logging.apache.org/log4j/2.x
    异步记录器的吞吐量比Log4j 1.x和Logback高18倍(官方数据),延迟低。

    • log4j-core: 核心实现包,日志的基础
    • log4j-api:是log4j的API接口,可以与log4j-core一起使用,也可以使用其他的日志实现,例如logback实现,相比slf4j还有其他优点,例如:支持记录方式不止是字符串,有更多的记录方式等等。
    • log4j-web:Web项目使用
    • log4j-jcl:log4j到commons-logging的桥梁
    4、JUL(java.util.logging)

    Java提供了自己的日志框架,类似于Log4J,但是API并不完善,对开发者不是很友好,而且对于日志的级别分类也不是很清晰。

    • jul-to-slf4j:jdk-logging到slf4j的桥梁
    5、JCL(Jakarta Commons-Logging)

    Jakarta Commons Logging和SLF4J非常类似,也是提供的一套API来掩盖了真正的Logger实现。便于不同的Logger的实现的替换,而不需要重新编译代码。缺点在于它的查找Logger的实现者的算法比较复杂,而且当出现了一些class loader之类的异常时,无法去修复它。

    • commons-logging:commons-logging所有内容
    • commons-logging-api:commons-loggingAPI接口
    • jcl-over-slf4j
    6、slf4j

    如果你开发的是类库或者嵌入式组件,那么就应该考虑采用SLF4J,因为不可能影响最终用户选择哪种日志系统。在另一方面,如果是一个简单或者独立的应用,确定只有一种日志系统,那么就没有使用SLF4J的必要。

    • slf4j-jdk14:slf4j到jdk-logging的桥梁
    • slf4j-log4j12:slf4j到log4j1的桥梁
    • log4j-slf4j-impl:slf4j到log4j2的桥梁
    • logback-classic:slf4j到logback的桥梁
    • slf4j-jcl:slf4j到commons-logging的桥梁

    日志集成配置

    1、commons-logging与其他日志框架集成
    1) commons-logging与jdk-logging集成:

    需要的jar包:
    commons-logging

    2) commons-logging与log4j1集成:

    需要的jar包:
    commons-logging
    log4j

    3) commons-logging与log4j2集成:

    需要的jar包:
    commons-logging
    log4j-api
    log4j-core
    log4j-jcl(集成包)

    4) commons-logging与logback集成:

    需要的jar包:
    logback-core
    logback-classic
    slf4j-api、jcl-over-slf4j(2个集成包,可以不再需要commons-logging)

    5) commons-logging与slf4j集成:

    需要的jar包:
    jcl-over-slf4j(集成包,不再需要commons-logging)
    slf4j-api

    2、slf4j与其他日志框架集成
    1)slf4j与jdk-logging集成:

    需要的jar包:
    slf4j-api
    slf4j-jdk14(集成包)

    2)slf4j与log4j1集成:

    需要的jar包:
    slf4j-api
    log4j
    slf4j-log4j12(集成包)

    3)slf4j与log4j2集成:

    需要的jar包:
    slf4j-api
    log4j-api
    log4j-core
    log4j-slf4j-impl(集成包)
    log4j-slf4j18-impl(集成包)
    这个地方有个坑,由于SLF4J绑定的兼容性中断,从版本2.11.1开始,提供了两个SLF4J到Log4j适配器。

    4)slf4j与logback集成:

    需要的jar包:
    slf4j-api
    logback-core
    logback-classic(集成包)

    5)slf4j与commons-logging集成:

    需要的jar包:
    slf4j-api
    commons-logging
    slf4j-jcl(集成包)

    相关文章

      网友评论

        本文标题:日志 log4j logback log4j2 slf4j jd

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