SpringBoot的日志管理

1. 目前的日志框架有:

日志的抽象层 日志的实现
JCL(Jakarta Commons Logging),jboss-logging,SLF4j(Simple Logging Facade for Java) JUL(java.util.logging),Log4j,Log4j2,Logback

用的是时候要选择一个日志抽象层和一个日志的实现, 推荐使用slf4j+logback
Spring框架默认使用JCL
SpringBoot选用SLF4j和Logback

2. SLF4j使用

2.1 如何使用SLF4j
开发的时候日志记录方法的调用不应该直接调用日志的实现类,而是调用日志抽象层里面的方法
用的时候要要入slf4j和logback的jar包

//导入slf4j的类
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");
  }
}

slf4j与各个日志实现类的用法:
SpringBoot的日志管理_第1张图片
注意:每个日志实现框架都有自己的配置文件。使用slf4j以后,配置要根据日志实现框架的写
2.2 如何该现有的系统的日志实现框架
现在各中技术框架底层的日志都不一样,比如Spring(commons-logging)、Hibernate(jboss-logging)…
那当使用其他技术框架时怎么样统一使用slf4j进行日志管理呢?
如以下slf4j官网图片所示:要使用slf4j的一些中转的jar,比如jcl-over-slf4j.jar会把底层框架中的jcl中的方法实现切换成slf4j去实现
SpringBoot的日志管理_第2张图片
统一系统中所有日志到slf4j需要做以下步骤:

  • 讲系统中其他日志框架先exclude(比如exclude jcl)
  • 用slf4j提供的中间转换jar替换原有的日志框架(比如导入jcl-over-slf4j.jar)
  • 导入slf4j其他的实现(比如我们用的logback)

3. SpringBoot日志

  • SpringBoot底层使用slf4j+logback的方式进行日志记录
  • SpringBoot会把其他日志都替换成slf4j
    SpringBoot的日志管理_第3张图片
    SpringBoot能自动适配所有的日志,而且底层使用的时slf4j+logback的方式记录日志。引入其他框架的时候,只需要把这个框架的日志依赖排除掉。
    SpringBoot会加载以下log的配置文件,但是推荐使用*-spring.xml的配置文件。因为不带-spring的logback.xml, 会被日志框架直接读取。而logback-spring.xml会被SpringBoot读取并解析,可以使用SpringBoot的高级Profile功能
Logging System Customization
Logback logback-spring.xml, logback-spring.groovy, logback.xml, or logback.groovy
Log4j2 log4j2-spring.xml or log4j2.xml
JDK (Java Util Logging) logging.properties

4. 切换日志

SpringBoot的日志管理_第4张图片

你可能感兴趣的:(SpringBoot的日志管理)