无法阻止Hibernate将日志写入控制台(log4j.properties没问题)

时间:2010-01-16 12:48:29

标签: java hibernate orm

我已经设置了

<property name="show_sql">false</property>

我已经禁用了log4j.properties

中的所有邮件

但Hibernate使用所有查询写入控制台&amp;语句。

6 个答案:

答案 0 :(得分:23)

hibernate.show_sql设置为true告诉hibernate 将所有SQL语句写入控制台。这是将日志类别org.hibernate.SQL设置为调试的替代方法。

因此,即使您将此属性设置为false,也请确保未定义以下类别(或配置为使用控制台appender):

log4j.logger.org.hibernate.SQL=DEBUG

此外,确保在实例化hibernate.show_sql对象时,不要以编程方式将Configuration设置为true。找到这样的事情:

Configuration cfg = new Configuration().configure().
    .setProperty("hibernate.show_sql", "true");

请注意,setProperty(String propertyName, String value)将第一个参数作为配置属性的全名,即hibernate.show_sql,而不只是show_sql

答案 1 :(得分:2)

在那里,我发现你可以用log4j.properties文件中的这2行来解决这个问题。

log4j.logger.org.hibernate = WARN
log4j.logger.org.hibernate = ERROR

答案 2 :(得分:1)

你向log4j.properties添加了这样的东西吗?

log4j.logger.org.hibernate = WARN

答案 3 :(得分:0)

看起来很奇怪,但是当使用Eclipse和JUnit Test任务时,所有输出仍然转到控制台(在Eclipse控制台窗口中)。

但是当我使用ant命令进行单元测试时,没有任何东西可以用于控制台。

答案 4 :(得分:0)

如前所述,您需要先将hibernate.show_sql设置为false。这将阻止hibernate输出到控制台或Tomcat stdout日志。

但是为了将您的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>

答案 5 :(得分:0)

它简单的Just add依赖于你的pom.xml文件

<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>

它将禁用日志记录并在src / main / resources / log4j.properties文件中添加put

log4j.rootLogger=OFF

然后你可以随时使用它,如果你想显示登录控制台然后在它上面或否则关闭