通过上节的学习,我们了解了 Spring Boot 日志框架的选用及统一,本节我们将重点介绍 Spring Boot 日志的配置及输出。
默认配置
Spring Boot 默认使用 SLF4J+Logback 记录日志,并提供了默认配置,即使我们不进行任何额外配,也可以使用 SLF4J+Logback 进行日志输出。
常见的日志配置包括日志级别、日志的输入出格式等内容。
日志级别
日志的输出都是分级别的,当一条日志信息的级别大于或等于配置文件的级别时,就对这条日志进行记录。
常见的日志级别如下(优先级依次升高)。
输出格式
我们可以通过以下常用日志参数对日志的输出格式进行修改,如下表。
示例 1
下面我们通过一个实例,来查看 Spring Boot 提供了哪些默认日志配置。
- 在 Spring Boot 中编写 Java 测试类,代码如下。
package net.biancheng.www;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class SpringbootLoggingApplicationTests {
Logger logger = LoggerFactory.getLogger(getClass());
/**
* 测试日志输出
* SLF4J 日志级别从小到大trace>debug>info>warn>error
*/
@Test
void logTest() {
//日志级别 由低到高
logger.trace("trace 级别日志");
logger.debug("debug 级别日志");
logger.info("info 级别日志");
logger.warn("warn 级别日志");
logger.error("error 级别日志");
}
}
- 执行该测试,控制台输出如下图。
SpringBoot 日志级别
图1:Spring Boot 日志级别
通过控制台输出结果可知,Spring Boot 日志默认级别为 info,日志输出内容默认包含以下元素:
时间日期
日志级别
进程 ID
分隔符:—
线程名:方括号括起来(可能会截断控制台输出)
Logger 名称
日志内容
修改默认日志配置
我们可以根据自身的需求,通过全局配置文件(application.properties/yml)修改 Spring Boot 日志级别和显示格式等默认配置。
在 application.properties 中,修改 Spring Boot 日志的默认配置,代码如下。
#日志级别
logging.level.net.biancheng.www=trace
#使用相对路径的方式设置日志输出的位置(项目根目录目录\my-log\mylog\spring.log)
#logging.file.path=my-log/myLog
#绝对路径方式将日志文件输出到 【项目所在磁盘根目录\springboot\logging\my\spring.log】
logging.file.path=/spring-boot/logging
#控制台日志输出格式
logging.pattern.console=%d{
yyyy-MM-dd hh:mm:ss} [%thread] %-5level %logger{
50} - %msg%n
#日志文件输出格式
logging.pattern.file=%d{
yyyy-MM-dd} === [%thread] === %-5level === %logger{
50} === - %msg%n