停止Hibernate控制台输出,没有log4j

时间:2010-08-28 07:15:54

标签: java hibernate log4j slf4j

如标题所述,我想停止Hibernate控制台输出,而不使用log4j。我试过使用log4j,但我没有任何地方。 我想要的是控制台INFO输出停止。 如果我使用log4j,可以在没有.properties或.xml文件的情况下执行此操作,只需在源代码中设置设置即可。 TNX

3 个答案:

答案 0 :(得分:4)

你可以试试这个:

Logger log = Logger.getLogger("org.hibernate");
        log.setLevel(Level.WARNING);

它应该工作。只需在打开任何会话之前调用它。

答案 1 :(得分:3)

我可以证明Hibernate不会登录控制台,除非你的配置以某种方式允许它这样做。那么,你使用的是什么版本的Hibernate?如果你没有使用LOG4J作为记录后端,你使用什么SLF4J绑定?你有配置文件吗?

或许你在hibernate.cfg.xml开启了对stdout的回应?:

<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>

你需要帮助读者一点,我们并不都有水晶球:)请提供更多材料。


更新:OP似乎在其类路径上有slf4-simple binding,它正好用于向控制台输出INFO日志消息:

  

Simple实施的绑定,将所有事件输出到System.err。仅打印I​​NFO级别以上的消息。此绑定在小型应用程序的上下文中可能很有用。

用另一个具有相应配置的绑定(you should not have multiple bindings on the class path)替换 slf4-simple应该会使Hibernate静音。

答案 2 :(得分:1)

如果您使用的是slf4j-api,解决方案就像在类路径中添加slf4j-log4j12-1.5.2.jar一样。这不是为log4j添加的用于禁用日志的配置。

此链接应该有用。

http://ayushsuman.blogspot.com/2010/07/turning-off-hibernate-logging-console.html

您还可以查看其他解决方案:

Can't stop Hibernate from writing log to console (log4j.properties is ok)