一、SpringBoot 中日志的设计

  SpringBoot 框架在企业中使用的越来越普遍,SpringBoot 日志也是开发中常用的日志系统。SpringBoot 默认就是使用 SLF4J 作为日志门面,Logback 作为日志实现来记录日志。

1、依赖

  spring-boot-starter-logging 是 SpringBoot 日志的依赖。

1        <dependency>
2            <groupId>org.springframework.boot</groupId>
3            <artifactId>spring-boot-starter-logging</artifactId>
4        </dependency>

2、依赖关系图

image.png

3、总结

  1. SpringBoot 底层默认使用 logback 作为日志实现。
  2. 使用了 slf4j 作为日志门面。
  3. 将 JUL 也转换成 slf4j
  4. 也可以使用 log4j2 作为日志门面,但是最终也是通过 slf4j 调用 logback

二、SpringBoot 中日志的使用

1、导入依赖

  这里我们导入 spring-boot-starter-web 依赖,它包含 spring-boot-starter-logging 依赖。spring-boot-starter-test 依赖用于单元测试。

 1        <dependency>
 2            <groupId>org.springframework.boot</groupId>
 3            <artifactId>spring-boot-starter-web</artifactId>
 4        </dependency>
 5        <dependency>
 6            <groupId>org.springframework.boot</groupId>
 7            <artifactId>spring-boot-starter-test</artifactId>
 8            <exclusions>
 9                <exclusion>
10                    <groupId>org.junit.vintage</groupId>
11                    <artifactId>junit-vintage-engine</artifactId>
12                </exclusion>
13            </exclusions>
14        </dependency>

2、快速入门

 1import org.junit.jupiter.api.Test;
 2import org.slf4j.Logger;
 3import org.slf4j.LoggerFactory;
 4import org.springframework.boot.test.context.SpringBootTest;
 5
 6@SpringBootTest
 7public class Tests {
 8
 9    // 日志记录器
10    public static final Logger LOGGER = LoggerFactory.getLogger(Tests.class);
11
12    @Test
13    public void test() {
14        // 日志记录输出
15        LOGGER.error("error");
16        LOGGER.warn("warn");
17        LOGGER.info("info");
18        LOGGER.debug("debug");
19        LOGGER.trace("trace");
20    }
21}

三、SpringBoot 中日志的配置

  在实际开发中,我们往往需要根据需求更改日志的配置信息,更改日志配置信息的方式如下:

1、在 SpringBoot 配置文件中配置

  在 SpringBoot 的配置文件中修改日志的配置,这里使用 yml 的方式。

 1# 指定自定义 Logger 对象日志级别
 2logging:
 3  level:
 4    top:
 5      # 指定日志的打印级别
 6      zyxwmj: trace
 7  file:
 8    # 指定日志文件存放的目录,默认的文件名为 spring.log
 9    path: E:\
10  pattern:
11    # 指定日志的打印格式
12    console:  "[%-5level] %d{yyyy-MM-dd HH🇲🇲ss} %c %M %L ----- %m%n"
13    file:  '[%-5level] %d{yyyy-MM-dd HH🇲🇲ss} %c %M %L +++++ %m%n'

2、单独配置

  给日志框架配置自己的配置文件,SpringBoot 就不使用默认配置了。

日志框架 配置文件
Logback logback-spring.xml(推荐)、logback.xml
log4j2 log4j2-spring.xml(推荐) 、log4j2.xml
JUL logging.properties

3、SpringBoot 解析日志配置

  在项目中,我们生产环境和开发环境的日志可能不同,通过 springProfile 标签可以根据项目的配置更改日志的配置,这里我们以 Logback 框架为例。
  注意:只有以logback-spring.xml命名的配置文件可以使用springProfile 标签,以logback.xml命名的配置文件不能使用。

 1    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
 2        <!--控制输出流对象 默认为 System.out-->
 3        <target>System.err</target>
 4        <!--日志消息格式配置-->
 5        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
 6            <springProfile name="dev">
 7                <pattern>[%-5level]+++ %d{yyyy-MM-dd HH:mm:ss} %c %M %L %m%n"</pattern>
 8            </springProfile>
 9            <springProfile name="pro">
10                <pattern>[%-5level]--- %d{yyyy-MM-dd HH:mm:ss} %c %M %L %m%n"</pattern>
11            </springProfile>
12        </encoder>
13    </appender>

  在 SpringBoot 配置文件中配置当前项目使用的配置。

1# 指定项目使用的具体环境
2spring:
3  profiles:
4    active: dev

四、SpringBoot 整合 SLF4J + Log4j2

  首先将 spring-boot-starter-web 依赖中的 spring-boot-starter-logging 依赖排除,然后导入 spring-boot-starter-log4j2 依赖即可。

 1        <dependency>
 2            <groupId>org.springframework.boot</groupId>
 3            <artifactId>spring-boot-starter-web</artifactId>
 4            <exclusions>
 5                <!--排除 logback-->
 6                <exclusion>
 7                    <groupId>org.springframework.boot</groupId>
 8                    <artifactId>spring-boot-starter-logging</artifactId>
 9                </exclusion>
10            </exclusions>
11        </dependency>
12        <!--添加log4j2-->
13        <dependency>
14            <groupId>org.springframework.boot</groupId>
15            <artifactId>spring-boot-starter-log4j2</artifactId>
16        </dependency>

标题:SpringBoot 中日志的使用
作者:Yi-Xing
地址:http://zyxwmj.top/articles/2020/03/25/1585106180546.html
博客中若有不恰当的地方,请您一定要告诉我。前路崎岖,望我们可以互相帮助,并肩前行!