1. 日志概念
所谓日志就是程序在运行的过程中,按照时间顺序,主动以标准化格式记录所发生的事情,使程序员可以更好的掌控自己代码
2. 如何用SLF4J打印日志
SpringBoot中内置了SLF4J日志框架,可以直接调用。它采用了门面模式通过SLF4J位日志的门面进行设计,具体的子系统有:JUL、log4j i/o、logback

2.1创建对象
代码实例:
我们通过SLF4J包下的Logger类进行创建对象,对象可以从LoggerFactory日志工厂中获取,
getLogger()方法中传入的值为你要打印日志的类
java
@RestController
public class LogTest {
@RequestMapping("/Test")
public String Test(){
Logger logger = LoggerFactory.getLogger(LogTest.class);
logger.info("打印日志");
return "日志打印";
}
}
输出:
2026-03-15T00:39:45.698+08:00为该日志的时间信息(具体到毫秒, INFO为日志的级别,21052为进程名,[spring_backgammon]为项目名,[nio-8080-exec-6]为线程名,com.examp- le.testapi.controller.LogTest为打印这条日志的类路径,接下来才是具体的日志信息

2.2使用注解
如果使用创建对象的形式打印日志,在不同类下都要创建对应的对象,相比通过一个注解解决比较复杂
- 添加lombok依赖
java
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
- 代码实例
相比之下只是通过一个@slf4j注解替换了Logger logger =LoggerFactory. getLogger(LogTest.class)
java
@Slf4j
@RestController
public class LogTest {
@RequestMapping("/Test")
public String Test(){
log.info("打印日志");
return "日志打印";
}
}
3. 日志的等级
⽇志的级别从**⾼到低** 依次为:FATAL、ERROR、WARN、INFO、DEBUG、TRACE
• FATAL: 致命信息,表⽰需要⽴即被处理的系统级错误.
• ERROR: 错误信息, 级别较⾼的错误⽇志信息, 但仍然不影响系统的继续运⾏.
• WARN: 警告信息, 不影响使⽤, 但需要注意的问题
• INFO: 普通信息, ⽤于记录应⽤程序正常运⾏时的⼀些信息, 例如系统启动完成、请求处理完成等.(默认使用)
• DEBUG: 调试信息, 需要调试时候的关键信息打印.
• TRACE: 追踪信息, ⽐DEBUG更细粒度的信息事件(除⾮有特殊⽤意,否则请使⽤DEBUG级别替代)
4.日志配置
我们可以通过修改日志的配置信息,进而实现修改日志的默认级别、日志的持久化处理、甚至是日志的打印格式等
4.1日志的持久化
在一个项目中我们可以通过修改配置信息,实现通过追加写的形式把全部日志存放在文件中,从而实现日志的持久化
| 配置项 | 作用 | 示例值 |
|---|---|---|
logging.file.name |
指定日志文件的完整路径 + 文件名 (优先级高于 logging.file.path) |
./logs/app.log |
logging.file.path |
指定日志文件的存储目录 (文件名将默认设为 spring.log) |
./logs 或 /var/log |
实例:
Spring项目可以直接在配置文件中修改,这里通过yml形式进行演示
java
#日志打印配置
logging:
file:
name: spring-blog.log
path: ./logs
4.2 日志文件分割
但随着时间的推移日志信息回越来越多,为了方便后续的查看我们需要对其进行整理,我们可以通过文件的大小进行分割文件,当文件达到我们设置的大小时自动生成新的一个文件,同时我们还可以对文件的命名格式进行设定
- 设置文件大小
默认值为:默认1MB
java
logging:
logback:
rollingpolicy:
max-file-size: 1B
- 设置文件名格
默认值为:${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz
java
logging:
logback:
rollingpolicy:
max-file-size: 1B(默认1MB)
file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i
4.3 配置⽇志格式
默认日志的格式如下,分别为时间戳、日志级别、进程ID、线程名、打印类的路径、打印内容
修改日志格式
- 打印控制台⽇志格式
java
logging:
pattern:
console: '%d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n'
- 打印⽇志⽂件中的⽇志格式
java
logging:
pattern:
file: '%d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n'
- 设置打印日志的级别
控制台日志打印的默认是INFO,控制台只会打印级别大于等于它的日志级别,也就是看不到TRACE和DEBUG日志级别,但也可以通过配置文件修改级别
java
logging:
level:
root: TRACE (默认是INFO)
想了解更多日志配置信息可以去:Spring文档