0

如何生成2个日志文件;将记录由 show-sql = true 属性生成的 Hibernate sql 消息。另一个将记录其余的 Hibernate 日志。

我已经配置了 logback.xml,如下所示:

<logger name="org.hibernate" level="debug" additivity="false">
    <appender-ref ref="hibernate" />
</logger>

<logger name="org.hibernate.SQL" additivity="false">
    <appender-ref ref="hibernate-sql" />
</logger>

它按预期生成 2 个日志文件。但是,它在 Tomcat 控制台、hibernate appender 和 hibernate-sql appender 中复制 hibernate-sql 日志消息。

我如何限制 logback 仅在 hibernate-sql appender 中生成 Hibernate sql 日志?

4

1 回答 1

3

Hibernate 以两种截然不同且完全不同的方式编写生成的 SQL。当您将属性 hibernate.show_sql 设置为 true 时,它​​会告诉 Hibernate 将生成的 SQL 写入标准输出。没有任何日志框架参与其中。这就是为什么你几乎不应该使用它。只需从配置中删除该属性,Tomcat 控制台中的 SQL 就会消失。

Hibernate 编写 SQL 的第二种方式,也是您应该使用的方式,是将其发送到 org.hibernate.SQL 日志记录类别下的日志记录框架。它与 hibernate.show_sql 完全没有联系。

另外,如果您不知道,Hibernate 还会使用 org.hibernate.type 类别记录绑定到准备好的语句的参数的所有值。这是使用 hibernate.show_sql 无法获得的,因此使用 Hibernate 的日志记录而不是 show_sql 更加灵活且信息量更大。

于 2012-12-30T09:11:26.803 回答