2011-11-10 182 views
1

我有一個使用休眠的tomcat應用程序。當我進入WEB-INF和修改log4j.properties以下...休眠不記錄到Log4J

log4j.logger.net.sf.hibernate.SQL=trace 

但我沒有看到我使用的日誌文件什麼。

log4j.rootLogger=debug, stdout 
.... 
log4j.appender.file=org.apache.log4j.FileAppender 
log4j.appender.file.File=hibernate.log 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 

日誌記錄似乎適用於我自己的應用程序。

任何想法?

+0

檢查休眠配置XML file.Is有「hibernate.show_sql」屬性設置爲false? –

回答

4

不知道這一點,但我認爲較新的Hibernate版本可能使用slf4j而不是log4j。你可以通過使用slf4j-log4j -bridge來解決這個問題。如果您使用的是Maven,則依賴關係是沿着

<!-- slf4j -> log4j bridge (some libraries use slf4j) --> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.5.6</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 

根據需要修改版本。

+0

我使用... \t \t com.googlecode.sli4j \t \t sli4j-SLF4J-簡單 \t \t 2.0 \t \t Jackie

+0

我不熟悉sli4j,但該網站說:「不需要setter方法,不需要特殊的註釋,只需聲明它,讓sli4j完成剩下的工作,最終和已設置的Logger將被跳過,sli4j將不會嘗試覆蓋它們。」難道問題是Hibernate記錄器被聲明爲'private static final',在這種情況下,sli4j不會注入自己的記錄器? – esaj

+0

我試着添加這個,而我認爲它工作x2檢查 – Jackie

0

嘗試以下,因爲Hibernate已經不再是一個net.sf包層次下:

log4j.logger.org.hibernate.SQL=trace 
+0

謝謝,但我使用的是舊版本。 – Jackie

+0

我認爲,當hibernate在'net.sf'下時,它還沒有使用slf4j。只是想知道你是否真的發現了這個問題。 – cherouvim