java - 显示 Hibernate SQL 的 Logback 记录器必须大写

标签 java hibernate spring-boot spring-data-jpa logback

我有一个 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/

相关文章:

java - Hibernate 错误 :Unable to create requested service [org. hibernate.engine.jdbc.env.spi.JdbcEnvironment]

security - Spring Boot 多重认证适配器

java - 如何设置 InternetExplorerDriver 使其正常工作

java - 文字显示为灰色

java - 当在 javafx 中重新加载场景最大化时不起作用

java Serialized接口(interface)没有功能,为什么会影响 "writeObject"/"readObject"

java - StaleObjectStateException 错误

java - @Where 子句在 hibernate 连接查询中不起作用

java - Spring boot RESTful 服务作为 WAR 而不是 JAR

java - Spring 启动: Can not POST into ManyToMany Relation