SpringBoot-(二十八)SpringBoot整合日志框架

本文最后更新于:October 23, 2022 pm

SpringBoot框架中有两个非常重要的策略:开箱即用和约定优于配置。其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

目录

SLF4J初体验

创建一个SpringBoot项目,在spring-boot-starter-web中默认就有slf4j和logback的依赖。

推荐直接查看整合SpringBoot部分。

测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package com.tothefor.motorcode;

import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class MotorCodeApplicationTests {
private static final Logger LOGGER = LoggerFactory.getLogger(MotorCodeApplicationTests.class);

@Test
void contextLoads() {
int a = 32;
LOGGER.trace("trace");
LOGGER.debug("debug");
LOGGER.info("info");
LOGGER.info("info:{}",a);
LOGGER.warn("warn");
LOGGER.error("error");

}

}

SLF4J+Logback

配置文件

日志输出格式

1
2
3
4
5
6
7
8
%-10level 级别,10个字符,左对齐
%d{yyyy-MM-dd HH:mm:ss.SSS} 日期
%c 当前类全限定名称
%M 当前执行日志的方法
%L 行号
%thread 线程名称
%m或者%msg 信息
%n 换行

通用属性配置

类似于Mybatis中的SQL片段。

1
2
3
4
5
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 输出格式 -->
<property name="pattern" value="[%-10level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L %thread %m%n"></property>
</configuration>

配置输出

是输出到控制台,还是输出到文件。可以自行定义。

1
2
3
4
5
6
7
8
9
10
11
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!-- 输出设置:System.out:黑色;System.err:红色-->
<target>
System.err
</target>
<!-- 日志的输出格式-->
<encoder>
<pattern>${pattern}</pattern>
<charset class="java.nio.charset.Charset">utf8</charset>
</encoder>
</appender>

日志记录器

记录需要输出的日志。

1
2
3
4
<!-- 日志记录器:level:配置日志级别-->
<root level="ALL">
<appender-ref ref="console" />
</root>

解释:所有的日志,均通过 console 的输出方式进行。

整合SpringBoot

这里只是简单记录一下,具体的文件拆分等等其他并没有记录。

输出到控制台

application.yml内容如下:

1
2
3
4
5
6
7
8
9
10
spring:
application:
name: motorCode

logging:
level:
root: INFO # 默认info
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%t] [%c#%M-%L] %m%n"

⚠️注意:console后面的值必须使用双引号,否则会报找不到配置文件。

再次运行上面的测试代码。

输出到文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
spring:
application:
name: motorCode

logging:
level:
root: INFO
pattern: # 输出格式
# console: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%t] [%c %M-%L] %m%n"
file: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%t] [%c %M-%L] %m%n"
file: # 日志输出的文件
#这两个选一个配置就可以了,一起配置的话,name的生效。系统每次启动都会在原来的日志文件上追加数据
# name: F:/ideaWorkSpace/spring-boot.log
path: /Users/duibagroup/Desktop/motorCode/src/main/resources/log #会在log目录下生成一个spring.log的日志文件,相对路径为项目目录下
# path: ./log 相对路径,是相对于项目目录,而不是resource

⚠️注意:这里配置的只是目录,会在此目录下自动生成一个spring.log的日志文件。