日志框架总结

1 日志框架简介

(参考:http://xfhnever.com/2015/09/20/log-java-2/)
各种日志框架可以分为两类:

  1. 日志实现框架:jdk自带的logging(jul),log4j1、log4j2、logback
  2. 日志门面,即提供统一的接口不提供实现:apache的commons-logging(jcl)、slf4j

2 日志实现框架需要的jar包

  1. log4j:

    • log4j:log4j1的全部内容
  2. log4j2:

    • log4j-api:log4j2定义的API
    • log4j-core:log4j2上述API的实现
  3. logback:

    • logback-core:logback的核心包
    • logback-classic:logback实现了slf4j的API

3 slf4j需要的jar包

  1. slf4j-api

4 slf4j转向具体日志实现框架

项目中使用slf4j接口进行编程,而slf4j并没有整整的日志实现,需要我们加入日志实现依赖,并引入slf4j到某个具体日志实现的桥梁

  1. slf4j-jdk14:slf4j到jdk-logging的桥梁
  2. slf4j-log4j12:slf4j到log4j1的桥梁(之前一直以为是到log4j2的桥梁,引起错误)
  3. log4j-slf4j-impl:slf4j到log4j2的桥梁(log4j2使用该包)
  4. logback-classic:slf4j到logback的桥梁
  5. slf4j-jcl:slf4j到commons-logging的桥梁

5 日志实现转向slf4j

例如包使用log4j作为日志实现,而我们的项目使用log4j2作为日志实现,那么我们可以将log4j的日志输出交给slf4j,slf4j再交给log4j2来输出。这一部分主要用来进行实际的日志框架之间的切换

  1. jul-to-slf4j:jdk-logging到slf4j的桥梁
  2. log4j-over-slf4j:log4j1到slf4j的桥梁
  3. jcl-over-slf4j:commons-logging到slf4j的桥梁
  4. log4j-to-slf4j:将使用log4j2输出的日志桥接至slf4j

6 最佳实践

一般使用slf4j提供统一的日志接口,加上slf4j到具体日志实现的桥梁,最后再引入具体的日志实现。如使用log4j2的配置

        <!--slf4j-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
        </dependency>

        <!--桥梁-->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-slf4j-impl</artifactId>
            <version>2.9.1</version>
        </dependency>

        <!--log4j2-->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.11.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.11.0</version>
        </dependency>

参考

  1. http://xfhnever.com/2015/09/20/log-java-2/
  2. https://www.cnblogs.com/hafiz/p/6170702.html
原文地址:https://www.cnblogs.com/set-cookie/p/8836496.html