如何在Spring Boot中配置日志级别以屏蔽框架及Hibernate控制台调试日志
解决Spring和Hibernate调试日志泛滥,仅保留自定义日志的方案
你已经找对了方向,只需要再精准调整日志级别的控制逻辑,就能实现只看自定义DEBUG日志、屏蔽框架调试信息的需求。下面是具体的优化方案:
1. 修正app.yml日志配置
核心思路是:全局默认日志级别设为INFO,仅给你的自定义代码所在包开启DEBUG,同时明确指定Spring和Hibernate的日志级别为INFO,彻底屏蔽它们的调试输出。修改后的配置如下:
logging: file: direct_delivery.log level: root: INFO # 全局默认INFO,避免所有未指定的包输出DEBUG日志 com.your.custom.package: DEBUG # 替换成你自己代码的根包路径(比如com.example.directdelivery) org.springframework: INFO # 整个Spring框架设为INFO,覆盖所有子模块 org.hibernate: INFO # Hibernate框架设为INFO pattern: file: '%d{yyyy-MM-dd HH:mm:ss} - %msg%n'
关键提醒:一定要把
com.your.custom.package替换成你实际的自定义代码包路径,这样只有这个包下的日志会输出DEBUG级别内容。
2. 调整配置类中的Logger Bean
从你的代码片段看,你可能用了java.util.logging.Logger,但Spring Boot默认使用SLF4J+Logback作为日志框架,建议改用SLF4J的标准方式获取Logger,确保日志级别配置能正确生效:
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class AppConfig { @Bean public Logger logger() { // 推荐绑定到你的主类或者自定义包的Logger,确保日志级别匹配 return LoggerFactory.getLogger(AppConfig.class); // 如果你想覆盖整个自定义包,也可以写:LoggerFactory.getLogger("com.your.custom.package"); } }
3. 验证效果
启动应用后,你会发现:
- 控制台和日志文件里只会出现你自定义代码中用
logger.debug()输出的内容 - Spring框架和Hibernate的调试信息(比如SQL执行细节、Spring上下文初始化日志等)会被完全屏蔽,只保留INFO及以上级别的必要日志
内容的提问来源于stack exchange,提问作者Daria
相关产品推荐
相关产品推荐

