spring boot 日志(一)

日志框架

在调试时,常使用system.out来查看当前程序运行状况。将这些代码去掉,信息打印在一个文件当中,形成日志框架用于记录运行信息。为所有的日志框架编写一个统一的接口层,形成日志门面(日志的一个抽象层)。要用到哪个日志,就向项目中导入具体的日志实现就行了。我们之前的日志框架都是实现的这个抽象层。

市面上的日志框架:

使用时,在左边选一个作为接口,在右边选一个作为实现。spring框架默认使用JCL。

Spring Boot经过封装后以SLF4j作为日志门面,以Logback作为日志实现。

SLF4j的使用

一、如何使用

在实际开发的过程中,日志记录方法的调用,不应该直接调用日志的实现类,而是调用日志抽象层里的方法。SLF4j的官方文档:http://www.slf4j.org/manual.html

首先应该给系统里面导入SLF4j的jar包,和Logback的实现jar包。

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框架的日志实现。

spring boot 日志(一)_第1张图片

每一个日志的实现框架都有自己的配置文件。使用slf4j之后,配置文集还是做成日志实现框架自己本身的配置文件。

二、遗留问题

在一个系统当中,使用slf4j+Logback进行开发,而此时还有可能依赖其他的框架比如spring、Mybatis等等。不同的框架在底层用到的日志各不相同,比如spring框架用到的就是commons-logging。在实际开发中,需要统一日志记录,即使是别的框架也一起使用slf4j进行输出。

打开如下地址的文档:http://www.slf4j.org/legacy.html

click to enlarge

如何让系统中所有的日志都统一到slf4j?

1、将系统中其他日志框架先排除出去。比如在导入spring的时候,去掉相关依赖,让它别导入Commons Logging。

2、用中间包来替换原有的日志框架。(中间包就是上图中的小格子里所写的,而原有的日志框架是大格子里所写的)。

3、我们导入slf4j其他的实现。

日志关系

click to enlarge

最基本的依赖:

spring boot 使用它来做日志功能:

spring boot 的底层依赖关系:

spring boot 日志(一)_第2张图片

总结:

1、spring boot底层也是使用slf4j+Logback的方式进行日志记录。

2、spring boot也把其他的日志都替换成了slf4j。

3、中间转换包

spring boot 日志(一)_第3张图片

spring boot 日志(一)_第4张图片

4、如果我们要引入其他框架,一定要把这个框架的默认日志依赖移除掉。

spring框架使用的是commons-logging:

spring boot 日志(一)_第5张图片

spring boot能够自动适配所有的日志,而且底层使用slf4j+Logback的方式记录日志。引入其他框架的时候,只需要把这个框架依赖的日志框架排除掉。

 

 

你可能感兴趣的:(java,spring,slf4j,spring,boot)