当前位置: 首页 > 知识库问答 >
问题:

日志返回可加性为假仍然Hibernate在Tomcat控制台上生成的sql日志

华欣荣
2023-03-14

我配置了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日志?

共有1个答案

卫昊东
2023-03-14

Hibernate以两种完全不同的方式编写生成的SQL。当您将属性Hibernate.show_sql设置为true时,它会告诉Hibernate将生成的SQL写入stdout。在这方面没有任何日志记录框架。这就是为什么你绝对不应该使用它。只需从配置中删除该属性,Tomcat控制台中的SQL就会消失。

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

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

 类似资料:
  • Laravel中是否有类似的东西允许您查看正在执行的实际SQL?例如,在Rails中,您可以在控制台中看到SQL。在Django中,您有一个工具栏。 在《拉威尔4》中有类似的东西吗? 澄清一下:我的问题是如何在没有代码的情况下做到这一点。Laravel中是否有内置的东西不需要我在应用程序中编写代码? 更新:最好我也希望看到CLI查询(例如)

  • 问题内容: 当运行Spring / Hibernate应用程序时,我在控制台上看到以下不需要的输出: 我已经像这样配置了Log4j记录器: 如何使这些消息静音? 问题答案: 我相当确定您正在看到这些SQL语句,因为Hibernate配置中某处的属性“ hibernate.show_sql”设置为true。找到该设置并将其更改为false。

  • 问题内容: 有没有一种方法可以在Eclipse控制台中为部分日志着色。我知道我可以发送到错误流和标准流并以不同的方式给它们上色,但是我更希望在ANSI转义码(或其他HTML格式)行中查找,可以在其中将颜色嵌入字符串中以对其进行着色日志。 它肯定会有助于使重要的部分脱颖而出,而无需诉诸怪异的布局,而是将布局保持在log4j设置中 这是我正在寻找的示例: [INFO]网格已完成....... 否 如果

  • 嘿,我想知道控制台中的输出是否可能与文件输出中的输出相同。 这是我的XML配置。 滚动文件中的输出 在控制台中为空。但是现在如果我改变 到"追踪" 将是2,4,6。。。。在控制台和我的文件中,它将是1,3,5,7。。。这很容易理解。 但是我的问题是,我们如何在控制台和文件中同时拥有相同的日志级(跟踪)输出?(添加包名称和级别的标签不起作用) 与此问题相关: log4j2 xml配置-登录到文件和控

  • 问题内容: 我正在使用hibernate3,并希望阻止它将所有启动消息转储到控制台。我尝试注释掉log4j.properties中的stdout行,但是没有运气。我在下面粘贴了我的日志文件。另外,我在标准项目结构中使用eclipse,并且在项目文件夹的根目录和bin文件夹中都有一个log4j.properties副本。 问题答案: 尝试设置更合理的日志记录级别。日志级别设置为仅记录在事件的装置或更