无法阻止 Hibernate 将日志写入控制台(log4j.properties 可以)
Posted
技术标签:
【中文标题】无法阻止 Hibernate 将日志写入控制台(log4j.properties 可以)【英文标题】:Can't stop Hibernate from writing log to console (log4j.properties is ok) 【发布时间】:2010-01-16 12:48:28 【问题描述】:我已经设置好了
<property name="show_sql">false</property>
我已禁用 log4j.properties 中的所有消息
但是 Hibernate 将所有查询和语句写入控制台。
【问题讨论】:
我遇到了同样的问题。我已经设置了 log4j.logger.org.hibernate=INFO 和将hibernate.show_sql
设置为true
告诉休眠将所有SQL 语句写入控制台。这是将日志类别org.hibernate.SQL
设置为调试的替代方法。
因此,即使您将此属性设置为 false
,请确保您没有定义以下类别(或配置为使用控制台附加程序):
log4j.logger.org.hibernate.SQL=DEBUG
另外,请确保在实例化 Configuration
对象时不要以编程方式将 hibernate.show_sql
设置为 true。狩猎这样的东西:
Configuration cfg = new Configuration().configure().
.setProperty("hibernate.show_sql", "true");
注意setProperty(String propertyName, String value)
将配置属性的全名作为第一个参数,即hibernate.show_sql
,而不仅仅是show_sql
。
【讨论】:
@Pascal:请参阅我对问题的评论。你建议的一切,我都调查过了。您还有其他想法吗? 我使用 logback(加上 slf4j)并添加到我的 logback 配置文件中:<logger name="org.hibernate.type" level="ALL" /> <logger name="org.hibernate.SQL" level="WARN" /> <logger name="org.hibernate" level="DEBUG" />
【参考方案2】:
您好,我发现您也可以使用 log4j.properties 文件中的这两行来解决这个问题。
log4j.logger.org.hibernate = WARN
log4j.logger.org.hibernate = ERROR
【讨论】:
【参考方案3】:您在 log4j.properties 中添加了类似的内容?
log4j.logger.org.hibernate = WARN
【讨论】:
【参考方案4】:看起来很奇怪,但是当 Use Eclipse with JUnit Test 任务时,所有的输出仍然到控制台(在 Eclipse 控制台窗口中)。
但是当我使用 ant 命令进行单元测试时,控制台什么也没有。
【讨论】:
【参考方案5】:如前所述,您需要先将hibernate.show_sql
设置为false
。这将阻止休眠输出到控制台或 Tomcat 标准输出日志。
但为了将您的 sql 输出定向到另一个日志,请在 log4j.xml 文件中使用此代码:
<logger name="org.hibernate.SQL" additivity="false">
<level value="DEBUG" />
<appender-ref ref="hibernate"/>
</logger>
要保持正常的休眠日志级别(WARN / ERROR)到控制台,请在 log4j.xml 文件中使用此代码:
<category name="org.hibernate">
<priority value="WARN" />
</category>
【讨论】:
【参考方案6】:它很简单,只需将依赖项添加到您的 pom.xml 文件中
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
它将禁用日志记录并添加放入 src/main/resources/log4j.properties 文件中
log4j.rootLogger=OFF
然后你可以随时使用它,如果你想在控制台上显示日志然后 On it 或 OFF
【讨论】:
以上是关于无法阻止 Hibernate 将日志写入控制台(log4j.properties 可以)的主要内容,如果未能解决你的问题,请参考以下文章