2011-11-10 152 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