【问题标题】:logback additivity is false still hibernate sql logs generated on Tomcat consolelogback additivity is false 仍然在 Tomcat 控制台上生成休眠 sql 日志
【发布时间】:2012-12-30 07:17:23
【问题描述】:

如何生成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 日志?

【问题讨论】:

    标签: sql hibernate logback


    【解决方案1】:

    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 更加灵活且信息量更大。

    【讨论】:

      猜你喜欢
      • 2011-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-24
      • 1970-01-01
      • 2014-12-09
      相关资源
      最近更新 更多