Spring Boot中hibernate.type=trace配置不生效的原因排查
无法打印Hibernate查询参数的排查方案
问题描述
尝试多种方式打印Hibernate查询参数均失败,已设置TRACE级日志但无对应输出。相关配置及当前日志如下:
application.properties配置
spring.jpa.show-sql=true logging.level.org.hibernate.SQL=DEBUG logging.level.org.hibernate.type=trace
当前日志输出(无TRACE级内容)
[2m2023-03-19T04:26:46.061+09:00[0;39m [32mDEBUG[0;39m [35m11145[0;39m [2m---[0;39m [2m[nio-8080-exec-1][0;39m [36morg.hibernate.SQL [0;39m [2m:[0;39m insert into relgroup_word (word_id, relgroup_id) values (?, ?) Hibernate: insert into relgroup_word (word_id, relgroup_id) values (?, ?)
build.gradle配置
plugins { id 'java' id 'org.springframework.boot' version '3.0.4' id 'io.spring.dependency-management' version '1.1.0' } group = 'com.kakaobank' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' compileOnly 'org.projectlombok:lombok' developmentOnly 'org.springframework.boot:spring-boot-devtools' implementation 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' } tasks.named('test') { useJUnitPlatform() }
排查要点
- 修正Hibernate 6.x的日志路径:Spring Boot 3.x适配Hibernate 6.x,参数绑定日志路径已从
org.hibernate.type改为org.hibernate.orm.jdbc.bind,需更新配置:logging.level.org.hibernate.orm.jdbc.bind=trace - 检查自定义日志配置优先级:若项目存在
logback-spring.xml、log4j2.xml等配置文件,需确认其中未对org.hibernate.orm.jdbc.bind设置低于TRACE的级别(如INFO/DEBUG),如有则调整为TRACE。 - 区分
spring.jpa.show-sql与日志打印:spring.jpa.show-sql=true仅打印SQL语句,不输出参数,需依赖日志配置实现参数打印,二者不冲突但功能不同。 - 验证DevTools环境配置:使用
spring-boot-devtools时,检查环境特定配置文件(如application-dev.properties)是否覆盖了主配置的日志级别,确保对应环境也设置了正确的TRACE级别。 - 确认日志输出位置:部分日志框架会将TRACE级日志定向到单独文件而非控制台,检查日志配置文件,确认TRACE日志的输出目标是否为当前查看的控制台。
内容的提问来源于stack exchange,提问作者itsmarziparzi
相关产品推荐
相关产品推荐

