2010-08-28 35 views
2

正如在標題中所說,我想停止Hibernate控制檯輸出,而不使用log4j。我曾嘗試使用log4j,但我沒有得到任何地方。 我想要的是控制檯信息輸出停止。 如果我使用的是log4j,可以不使用.properties或.xml文件,只需在源代碼中設置設置即可。 TNX停止Hibernate控制檯輸出,不用log4j

回答

1

解決方案看起來像在您的類路徑中添加slf4j-log4j12-1.5.2.jar,如果您使用的是slf4j-api。這不是爲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)

+0

thx,這有很大的幫助,但是這個例子產生了對記錄器的多個綁定警告,但是我越來越接近解決方案。 Tnx會得到一張支票> D – Darwly 2010-08-28 07:51:19

+0

所以,第一個鏈接不是解決方案,它只是創建沒有配置的地面。所以,如果你使用log4j綁定,不要使用slf4.simple。 解決方案獲得所有正確的版本。我的解決方案是 。休眠3.5 slf4j-api-1.6。1 SLF4J-log4j12-1.6.1 的log4j-1.2.16 並與Log4j提供的PropertyConfigurator屬性,設置爲FATAL – Darwly 2010-08-28 08:16:03

+1

@Martes我很抱歉,但這裏提到的博客文章是完全錯誤的(我留下了評論以解釋問題,但作者決定忽略他的錯誤並刪除了我的評論)。作者通過在類路徑上放置幾個綁定來「解決」他的問題,隱藏了'slf4j-simple'綁定。但這是錯誤的,SLF4J確實會抱怨這一點。所以沒有進攻,但這個參考只是可怕的錯誤,這個接受的答案也是不正確的。解決方案是不添加隨機SLF4J綁定,解決方案是替換'slf4j-simple'綁定。 – 2010-08-30 00:25:20

3

你可以試試這個:

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

它應該工作。在打開任何會話之前打電話給它。

+1

thx,但是這個工作。 – Darwly 2010-08-28 07:50:13

+1

他很好,這部分幫助我很多.. tnx。 那麼我用它來改變源的級別取決於合適的文件。 – Darwly 2010-08-28 08:31:58

+0

爲什麼這不是正確的答案? – ThreaT 2014-01-07 14:43:59

3

我可以證實,Hibernate不會記錄在控制檯上,除非您的配置在某種程度上允許它這樣做。那麼,你使用的是什麼版本的Hibernate?如果您不使用LOG4J作爲日誌後端,您使用了什麼SLF4J綁定?你有配置文件嗎?

或者,也許沒有你打開SQL的呼應你hibernate.cfg.xml到stdout:

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

您需要幫助讀者一點,我們並不都具有水晶球:)請提供更多的材料。


更新:看來,OP有他的類路徑上的slf4-simplebinding這恰恰是用來輸出INFO日誌消息到控制檯:

綁定的Simple實現,它輸出所有事件System.err。僅打印級別爲INFO及更高的消息。這種綁定可能適用於小型應用程序。

與另一種結合(you should not have multiple bindings on the class path)與適當的配置應該沉默休眠更換slf4-simple

+0

已經解決了,我的評論解釋了這一切。這是我的虛擬mestake,休眠不輸出,如果不是傷心的話,這個問題是在我的綁定,多個綁定不是一個好主意,slf4-simple和log4j。但現在都解決了。我的上面的評論顯示了我的解 生病記得在將來提供更多信息。 TNX – Darwly 2010-08-28 08:27:42