一,SpringBoot日志简介
SpringBoot框架默认集成的抽象日志框架为SLF4J(Simple Logging Facade for Java),具体的日志框架为LogBack。SpringBoot项目直接引入依赖即可
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
public class Demo {
private static final Logger logger = LoggerFactory.getLogger(Demo.class);
public void recordLogs() {
logger.trace("This is an trace message");
logger.debug("This is a debug message");
logger.info("Application started successfully!");
logger.warn("This is a warning message");
logger.error("This is an error message");
}
}
二,日志级别(Log Level)
日志级别用来指定日志记录严重程度的标准,不同日志级别代表了不同的重要性和紧急程度,有助于开发者根据实际需要来过滤和关注特定类型的日志信息。会记录本级级和更高级别的日志,常见的日志级别由低到高如下:
SpringBoot默认日志级别是INFO,且将日志打印到控制台
日志级别 | 描述 |
---|---|
TRACE | 最低级别日志,用于记录最详细的信息,通常是在调试应用时使用 |
DEBUG | 用于记录程序运行时的详细信息,比如变量的值、进入或退出某个方法。主要用于开发阶段的调试 |
INFO | 用于记录程序的一般信息,比如系统的启动、服务的初始化完成。表示程序正常运行 |
WARN | 警告信息,表示可能存在的问题或异常的情况,但是不至于导致程序停止工作 |
ERROR | 错误信息,表示发生了一个错误事件,该错误可能会导致某些功能无法正常工作 |
丰富SpringBoot启动日志是通过以下两项配置影响SpringBoot框架本身的启动日志和追踪信息。两项配置并不影响在业务代码中编写的日志记录,SpringBoot框架启动完成之后,不再有任何作用
# 启动SpringBoot的启动跟踪,生成包含启动信息的详细跟踪文件,包含debug: true输出的内容
trace: true
# 启动SpringBoot的调试模式,增加启动日志的详细程度并显示自动配置报告
debug: true
三,日志的粗细粒度
# SpringBoot框架日志相关配置
logging:
# 日志输出等级配置(细粒度的优先级更高)
level:
# 根日志粒度,即整个项目的
root: info
# 为特定的包设置日志级别
com.example.mapper: debug
# 为特定的类设置日志级别
com.service.DemoService: trace
四,日志输出到文件
SpringBoot框架支持以下两种日志输出到文件的配置方式,二者不兼容,同时存在时,输出指定日志文件名称的配置方式生效
1.输出指定日志文件路径
自动在指定路径下生成一个名称固定为spring.log的日志文件,文件名称不可配置
# SpringBoot框架日志相关配置
logging:
# 日志输出到文件相关配置
file:
# 设置日志文件的路径
path: ./logs/
2.输出指定日志文件名称
日志文件生成到项目的根目录下
# SpringBoot框架日志相关配置
logging:
# 日志输出到文件相关配置
file:
# 设置日志文件的名称
name: customName.log
五,滚动日志
滚动日志是一种日志管理机制,用于防止日志文件无限增长,通过将日志文件分割成多个文件,每个文件只包含一定时间段或大小的日志
以下滚动日志配置是LogBack框架的
# SpringBoot框架日志相关配置
logging:
# LogBack的滚动日志相关配置
logback:
rollingpolicy:
# 日志文件达到多大时进行归档
max-file-size: 100MB
# 所有归档的日志文件总共达到多大时进行删除,默认是0B,表示不删除
total-size-cap: 50GB
# 归档日志最多保留多少天
max-history: 60
# 项目启动时是否要清理归档日志
clean-history-on-start: false
# 归档日志文件名格式,${LOG_FILE}为SpringBoot默认的文件名,即spring.log
file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i.log