1. 概述
Spring Boot 提供了大量开箱即用的自动配置,极大简化了企业级应用的开发。但在日志配置方面,过去一直有个小痛点:无法便捷地对一组相关的日志记录器(logger)统一设置日志级别。
比如你可能希望一次性开启所有 Web 层相关组件的 DEBUG 日志,而不是逐个配置 org.springframework.web
、org.springframework.http
等多个包的级别。这种重复配置不仅啰嗦,还容易遗漏。
从 Spring Boot 2.1 开始,官方引入了 Log Groups(日志分组) 这一特性(官方文档),完美解决了这个问题。
本文将带你快速掌握如何使用日志分组来提升配置效率。
2. 日志分组的使用
✅ 从 Spring Boot 2.1 起,支持将多个 logger 归为一组,并统一配置其日志行为。
要使用该功能,只需通过 logging.group
配置项定义一个分组:
logging.group.rest=com.baeldung.web,org.springframework.web,org.springframework.http
上面这行配置创建了一个名为 rest
的日志分组,包含了三个 logger 包路径。⚠️ 注意:多个 logger 名称之间用英文逗号 ,
分隔即可,非常简单粗暴。
定义好分组后,就可以像配置单个 logger 一样,通过 logging.level.{groupName}
来统一设置整个组的日志级别:
logging.level.rest=DEBUG
✅ 效果等同于你手动写了以下三行:
logging.level.com.baeldung.web=DEBUG
logging.level.org.springframework.web=DEBUG
logging.level.org.springframework.http=DEBUG
Spring Boot 会自动将该级别应用到分组内的所有成员,省时省力,避免踩坑。
2.1 内置日志分组
Spring Boot 默认提供了两个开箱即用的内置分组,无需定义即可直接使用:
✅ web
分组
适用于监控 Web 层调用链,包含以下 logger:
org.springframework.core.codec
org.springframework.http
org.springframework.web
org.springframework.boot.actuate.endpoint.web
org.springframework.boot.web.servlet.ServletContextInitializerBeans
✅ sql
分组
适用于查看数据库操作日志,包含:
org.springframework.jdbc.core
org.hibernate.SQL
org.jooq.tools.LoggerListener
你可以直接通过如下配置开启 SQL 调试日志:
logging.level.sql=DEBUG
✅ 一行配置,所有 SQL 相关操作日志全打开,调试时非常实用。
⚠️ 注意:Hibernate 的 SQL 日志输出依赖
org.hibernate.SQL
,而该 logger 正好被包含在sql
组中,因此使用此分组能自动覆盖常见 ORM 框架的 SQL 输出。
3. 总结
日志分组是 Spring Boot 2.1 中一个虽小但极其实用的功能。它让我们能够:
- ✅ 将相关组件的日志器逻辑归组
- ✅ 通过一个名称统一设置日志级别
- ✅ 减少重复配置,提升可维护性
尤其是在调试阶段,通过内置的 web
和 sql
分组,可以快速开启关键路径的日志输出,极大提升排错效率。
示例代码已托管至 GitHub:https://github.com/example-user/spring-boot-logging-demo(模拟地址)