目录
@Slf4j
在Spring Boot中,@Slf4j
是一个来自于 Lombok 库的注解,用于自动生成一个名为 log
的日志对象。
使用步骤
要在Spring Boot中使用 @Slf4j
,需要执行以下步骤:
1. 添加 Lombok 依赖
如果项目中没有添加 Lombok 依赖,可以在 pom.xml
文件中加入以下依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
<scope>provided</scope>
</dependency>
确保项目中的 slf4j-api
和日志实现(如 Logback)也已正确配置。Spring Boot 默认使用 Logback,因此通常不需要额外添加日志实现。
2. 在类上使用 @Slf4j
在你的类中使用 @Slf4j
注解,它会自动为你生成一个名为 log
的静态日志对象。
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
public class MyController {
@GetMapping("/log")
public String logExample() {
log.info("This is an INFO log message");
log.debug("This is a DEBUG log message");
log.error("This is an ERROR log message");
return "Check the logs!";
}
}
3. 日志级别
你可以根据需要使用不同的日志级别:
log.trace()
- 用于非常详细的日志信息,通常用于调试。log.debug()
- 用于调试时输出的信息。log.info()
- 用于常规的运行时日志信息。log.warn()
- 用于警告级别的日志,提示可能会出现的问题。log.error()
- 用于输出错误信息。
4. 配置日志级别
你可以通过 application.properties
或 application.yml
文件配置日志的输出级别。比如:
在 application.properties
文件中:
logging.level.com.example=DEBUG
在 application.yml
文件中:
logging:
level:
com.example: DEBUG
com.example
是你的类所在的包名,这样配置后,DEBUG
级别及以上的日志会被输出。
使用
@Slf4j
可以简化日志对象的声明,通过 Lombok 自动生成log
,并且与 Spring Boot 中的日志系统无缝集成。
slf4j日志级别排序
在 SLF4J 中,日志级别按照从低到高的顺序排列如下:
-
TRACE:最详细的日志级别,通常用于追踪程序的执行过程。适合调试非常细微的情况,输出信息量非常大。
-
DEBUG:调试级别,用于记录调试相关信息,开发阶段常用。比
TRACE
稍微少一些,但仍包含大量的详细信息。 -
INFO:信息级别,用于记录程序的常规运行信息,通常在生产环境中使用,输出程序的正常操作日志。
-
WARN:警告级别,表明可能存在潜在的问题,但程序还可以继续运行。这个级别通常用于提醒开发人员注意一些非关键性的错误。
-
ERROR:错误级别,记录程序中发生的严重错误,可能导致程序的某些功能无法正常工作。
这些日志级别的顺序决定了它们的优先级。日志框架会根据配置的日志级别过滤日志信息,输出等于或高于该级别的日志。例如,如果设置日志级别为 WARN
,则 WARN
和 ERROR
级别的日志会被输出,INFO
、DEBUG
和 TRACE
级别的日志则不会输出
日志级别顺序总结
TRACE
<DEBUG
<INFO
<WARN
<ERROR
在不同的环境中(例如开发、测试、生产),你可以根据需求配置不同的日志级别,以便控制日志的输出详细程度。
springBoot的默认日志级别
在 Spring Boot 中,默认的日志级别是 INFO
。
这意味着在没有显式配置日志级别的情况下,Spring Boot 会输出 INFO
级别及其更高的日志(即 WARN
和 ERROR
),而 DEBUG
和 TRACE
级别的日志不会被输出。