springboot05-日志的配置

浪子不回头ぞ 提交于 2020-03-07 09:23:15

SpringBoot选用SLF4j和logback;
SLF4j是抽象层,logback实现层

1、SLF4j使用

以后开发的时候,日志记录方法的调用,不应该来直接调用日志的实现类,而是调用抽象接口类。

给系统里面导入slf4j的jar和logback的实现jar

package com.example.demo;

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("HelloWorld");
    }
}


每一个日志的实现框架都有自己的配置文件。

使用了slf4j以后,配置文件还是做成日志实现框架的自己本身配置文件

2.遗留问题

a(slf4j+logback):Spring、Hibernate、MyBatis、xxxx:每一个框架的底层又使用了不同的日志框架。

我们要做到的就是:统一日志记录,即使是别的框架和我一起统一使用slf4j输出。

我们来看一下slf4j的legacy-api:http://www.slf4j.org/legacy.html

根据官方的来看,在多个框架下添加中间件进行替换,进行狸猫换太子,既能是的框架可以正常运行,然后添加slf4j进行日志管理。

在这里插入图片描述

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

1、将系统中其他日志框架先排除出去;

2、用中间包来替换原有的日志框架;

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

3.SpringBoot的日志文件

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <version>2.2.5.RELEASE</version>
      <scope>compile</scope>
    </dependency>

SpringBoot使用它来做日志功能:

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-logging</artifactId>
      <version>2.2.5.RELEASE</version>
      <scope>compile</scope>
    </dependency>

SpringBoot底层依赖关系

在这里插入图片描述

总结:

​ 1、SpringBoot底层也是slf4j+logback的方式进行日志记录

​ 2、SpringBoot也把其他的日志都替换成了slf4j

​ 3、中间替换包:

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

对于Spring5之后,Spring的底层jul已经被转化成了log4j,然后log4j添加中间层,实际还是slf4j,达到了最好适配SpringBoot底层的slf4j+logback。
在这里插入图片描述

在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!