控制台日志级别配置、@Slf4j注解自动生成日志记录器

140 阅读2分钟

1、控制台日志级别配置

1.1 application.yml具体配置

 logging:
   level:
     com:
       project:
         controller: info
         service: info
         mapper: debug

1.2和1.3是扩展知识,看看即可

1.2 日志级别的功能来源

日志级别的核心功能由 底层日志框架 提供的,例如:

  • Logback(Spring Boot 默认集成)
  • Log4j2(可通过配置切换使用)
  • Java Util Logging (JUL)

这些框架定义了 TRACEDEBUGINFOWARNERROR 等标准日志级别,并负责根据级别过滤和输出日志信息。

日志级别的作用场景:

日志级别用途适用场景
TRACE最详细调试信息,高频输出开发环境深度调试
DEBUG关键流程追踪开发/测试环境问题定位
INFO常规运行状态(如启动、服务调用)生产环境监控
WARN潜在问题(如参数不合法)生产环境预警
ERROR严重错误(如数据库连接失败)异常监控与告警

1.3 Spring Boot 的作用

1、Spring Boot 通过配置文件简化了日志级别的配置和管理,如1.1所示

2、多日志框架兼容:Spring Boot 通过 spring-boot-starter-logging(默认集成 Logback)或 spring-boot-starter-log4j2 支持切换底层日志框架,同时保持配置方式的一致性。

image-20250309165255908.png

2、@Slf4j注解自动生成日志记录器

@Slf4jLombok 提供的注解,其核心作用是 在编译时自动生成日志记录器

2.1 导入依赖

  • Lombok 依赖:需在 Maven 中添加 Lombok 依赖
  • SLF4J 依赖:因为@Slf4j基于 SLF4J 日志门面,需引入slf4j-api(Spring Boot 默认集成)
  • 日志实现依赖:如logback-classic(默认)或log4j等(Spring Boot 默认集成)
 <dependency>
     <groupId>org.projectlombok</groupId>
     <artifactId>lombok</artifactId>
     <version>1.18.24</version>
     <scope>provided</scope>
 </dependency>

2.2 在类上加@Slf4j注解

当在类上添加@Slf4j后,Lombok 会在编译阶段自动插入以下代码:

 private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(当前类名.class);
 @RestController
 @RequestMapping("/user")
 @Slf4j
 @Api(tags = "员工管理")
 public class UserController {
 ​
     @Autowired
     private UserService userService;
 ​
     @GetMapping("/page")
     @ApiOperation("用户分页查询")
     public Result<PageResult> page(UserPageQueryDTO userPageQueryDTO) {
         log.info("前端的参数:{}", userPageQueryDTO);
         PageResult pageResult = userService.page(userPageQueryDTO);
         return Result.success(pageResult);
     }
 }

2.3是扩展知识

2.3 为什么看不到log变量的声明?

Lombok 通过 编译期字节码增强 技术生成代码,因此在源代码中看不到log变量的声明。