0505-SpringBoot

第二章 日志

2.1 日志框架发展历史

  1. 常见的日志框架:JUL(java.util.logging)、JCL(Apache Commons Logging)、Log4j、Log4j2、Logback、SLF4j、joss-logging等。SpringBoot在框架内部使用JCL,Spirng-boot-starter-loggin采用了slf4j+logback的形式

    日志门面 日志实现
    JCL(Jakarta Commons Logging)
    SLF4j
    jboss-logging
    JUL
    Log4j
    Log4j2
    Logback
    • 选择一个日志门面,然后选择一个日志实现
      • jboss-logging:使用难度高
      • JCL:维护周期长
      • JUL:是Java提供的,和Log4j的竞品
      • Log4j2:借了Log4j之名,由Apache开发,功能强大,但是适配性差;
    • 选择SLF4作为日志门面:Log4j和Logback是同一个人开发的,先开发完成Log4j,后来因为升级所以开发出了SLF4j这个日志门面,并且重新开发出Logback,作为Log4j的升级版。

2.2 使用SLF4j

  1. 使用日志的方式:

    • 引入日志门面和日志实现

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
        ```

      - 调用日志门面的API

      ```java
      import org.slf4j.Logger;
      import org.slf4j.LoggerFactory;

      public class HelloWorld {
      public static void main(String[] args) {
      Logger logger = LoggerFactory.getLogger(HelloWorld.class);
      logger.info("Hello World");
      }
      }
  2. Slg4j:日志的配置文件还是需要使用日志框架实现的配置文件

    oX5TG6.png

    • 应用中只添加了slf4j-api,但是没有实现,所以日志没有输出
    • 正确用法应该是引入slf4j-api,然后在加入logback的依赖:logback-classic和logback-core
    • 如果想要切换使用log4j,需要添加一个适配包:slf4j-log212,如果要使用JUL,则需要添加slf4j-jdk14适配包
  3. 框架整合日志问题

    oX7WSx.png

    • 不用的框架使用被动依赖的不用的日志框架,所以框架需要统一使用日志框架
    • 首先应用程序引入SLF4j门面和Logback日志门面,同时添加上其他框架包的适配包
      • Commons loggin API-> jcl-over-sl4j
      • log4j -> log4j-over-slf4j
      • java util loggin -> jul-to-slf4j
    • 最后排除掉其他框架的日志实现框架

2.3 SpringBoot中日志框架

  1. SpringBoot依赖spring-boot-starter

  2. spring-boot-starter依赖了spring-boot-starter-loggin

  3. spring-boot-starter-loggin包含了

    • logback-classic依赖logback-core -> 实现了slf4j
    • jul-to-slf4j -> 适配了slf4j
    • log4j-over-slf4j -> 适配了slf4j
    • jck-over-slf4j -> 适配了slf4j
  4. SpringBoot日志的默认配置

    1
       
  5. logback配置文件

2.4 切换日志框架

打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • © 2020-2022 xiaoliuxuesheng
  • PV: UV:

老板,来一杯Java

支付宝
微信