我有一个 Spring Boot 应用程序,在 logback-spring.xml
中具有以下设置
<logger name="org.hibernate.sql" level="DEBUG" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
但是这不会记录生成的 SQL,除非我像这样将 sql
更改为大写
<logger name="org.hibernate.SQL" level="DEBUG" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
然后生成这样的日志语句
...org.hibernate.SQL : select count(disabled0_.user)
还值得注意的是,当我将鼠标悬停在记录器名称中的 SQL
上时,IntelliJ 不会链接到任何内容。当鼠标悬停在 org.hibernate
上时,它链接到该包,但停在 SQL
处。但它确实链接到其他更具体的类,例如这个类
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" additivity="false" >
<appender-ref ref="CONSOLE"/>
</logger>
在该示例中,将鼠标悬停在 BasicBinder
上确实链接到该类,并导致类似的语句
o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [VARCHAR]
为什么SQL
必须大写才能工作?
我正在使用spring-boot-starter-data-jpa:1.5.10.RELEASE
最佳答案
SQL 必须大写,因为记录器名称区分大小写。请参阅this answer .
IntelliJ 无法链接到该类,因为它实际上不是一个类,只是 Hibernate 记录器的名称。按照惯例,记录器名称是类名称,但这不是必需的,它们可以是任何字符串。
关于java - 显示 Hibernate SQL 的 Logback 记录器必须大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52876245/