Spring Boot中Hibernate慢SQL日志配置无效,所有SQL均被打印
Hibernate慢查询日志未生效,所有SQL都输出的原因及解决办法
问题根源
你当前的配置里同时启用了两个会强制输出所有SQL的配置项,它们直接覆盖了慢查询日志的预期行为:
spring.jpa.show-sql=true:该配置会直接在控制台打印所有Hibernate执行的SQL语句,不受执行时长限制logging.level.org.hibernate.SQL=DEBUG:这个日志级别设置会让Hibernate的org.hibernate.SQL日志类别输出所有SQL,同样无视慢查询阈值
而你配置的慢查询相关项(LOG_QUERIES_SLOWER_THAN_MS和logging.level.org.hibernate.SQL_SLOW=DEBUG)的作用是额外记录超过阈值的慢查询,但无法关闭默认的全量SQL输出逻辑。
解决步骤
要实现仅打印执行时间超过5秒的SQL,需要修改以下配置:
- 关闭全量SQL输出的配置:
- 移除或设置为
false:spring.jpa.show-sql=false - 调整日志级别,将
org.hibernate.SQL从DEBUG改为更高等级(比如INFO或WARN),或者直接注释掉:logging.level.org.hibernate.SQL=INFO
- 移除或设置为
- 保留慢查询相关配置以确保其生效:
logging.level.org.hibernate.SQL_SLOW=DEBUG spring.jpa.properties.hibernate.session.events.log.LOG_QUERIES_SLOWER_THAN_MS=5000
另外注意:spring.jpa.properties.hibernate.show_sql=true(下划线格式)和spring.jpa.show-sql=true(短横线格式)是功能重复的配置,重复设置也会导致重复输出,需确保两者都处于关闭状态。
内容的提问来源于stack exchange,提问作者Subodh Joshi
相关产品推荐
相关产品推荐

