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

我已经准备好了

false 

我已经禁用了log4j.properties中的所有消息

但是Hibernate使用所有查询和语句写入控制台。

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

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

 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

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

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

你在log4j.properties中添加这样的东西?

 log4j.logger.org.hibernate = WARN 

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

但是当我使用ant命令进行unit testing时,没有任何东西可以进入控制台

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

但是为了将您的sql输出定向到另一个日志,请在log4j.xml文件中使用此代码:

     

要将正常的hibernate日志级别(WARN / ERROR)保持到控制台,请在log4j.xml文件中使用此代码:

    

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

  log4j log4j 1.2.17 

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

 log4j.rootLogger=OFF 

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