2013-06-03 21 views
1

我們當前的項目沒有log4j jar,我們只使用JDK日誌API。 現在我需要看到當前顯示爲「?」,「?」的HQL語句的值。Hibernate 4.2:如何使用JDK日誌API跟蹤sql值

我發現一個lot of tips,使用LOG4J。但是,沒有解決發現JDK:---((

我已在logging.properties如下:

  1. org.hibernate.level=TRACE
  2. org.hibernate.SQL.level = TRACE
  3. .level=TRACE

但它沒有任何效果。如果我設置了INFO級別,那麼我發送的所有WARN都不可見,因此,logging.properties被綁定到Java類路徑

有沒有人有任何想法?

回答

0

關於Java JDK日誌權威資源是Java記錄指南:http://docs.oracle.com/javase/7/docs/api/java/util/logging/package-summary.html

但一般來說,JDK日誌沒有定義跟蹤級別:http://docs.oracle.com/javase/6/docs/api/java/util/logging/Level.html

Hibernate使用JBoss的日誌記錄的日誌記錄。 JBoss Logging定義了一個TRACE級別(與JDK以外的大多數日誌庫一樣);當橋接到JDK日誌記錄時,JBoss Logging將TRACE映射到JDK的FINER級別。所以你想在你的配置中使用=FINER(或=FINEST

+0

嗨,我都試過了,設置FINEST沒有效果: - ((如果我調試的org.jboss.logging.BasicLogger公共布爾isTraceEnabled(。 ){ return isEnabled(Level.TRACE);,返回「false」,因爲java.util.logging.Logger。public boolean isLoggable(Level level){if(level。intValue()

+0

您的問題不是Hibernate或JBoss日誌記錄。您只是沒有正確配置JDK日誌記錄。我從來沒有使用JDK日誌記錄(主要是因爲這樣的東西)。所以我無法幫助你。我發佈了JDK日誌記錄工具頁面。我試過閱讀它,但是tbh,它並不是很棒的文檔,而且我不知道如何通過屬性文件來配置JDK日誌記錄。 –

+0

@KamenJahr正如史蒂夫說,它看起來像JDK日誌記錄配置不正確。你能解釋你如何配置它嗎?默認情況下,JDK日誌記錄在JRE'lib'目錄中查找'logging.properties'文件。不過你可以用'java.util.logging.config.file'系統屬性覆蓋它。 –

0

JBoss Logging將使用關鍵字org.jboss.logging.provider查找系統設置。你需要做的是設置與值「JDK」該密鑰的系統屬性,使得Hibernate會使用Java日誌框架爲記錄

System.setProperty("org.jboss.logging.provider", "jdk"); 

在SQL登錄綁定參數,你需要在一個更聲明您logging.properties

org.hibernate.type.descriptor.sql.level=FINEST 

你可以從休眠 http://docs.jboss.org/hibernate/orm/4.3/topical/html/logging/Logging.html

0

的記錄導遊,我也遇到同樣的問題,不希望使用其他的日誌工具參考的細節。

我結束了以下配置(original question):

handlers=java.util.logging.ConsoleHandler 
java.util.logging.ConsoleHandler.level=FINE 
org.hibernate.level=WARN 
org.hibernate.SQL.level=FINE 

也許不是最好的,因爲它有時記錄了很多東西,但它的工作。

0

使用Wireshark,你可以很容易地看到完整的mysql句子