未使用Hibernate和slf4j生成日志文件

未使用Hibernate和slf4j生成日志文件,hibernate,log4j,slf4j,Hibernate,Log4j,Slf4j,在我的应用程序中,我使用了Hibernate、ApacheCommons日志和Log4J。但是没有生成我的日志文件。这是因为Hibernate使用slf4j吗 在我的类路径中,我有以下jar hibernate-3.2.7.ga.jar hibernate-annotations-3.4.0.GA.jar hibernate-commons-annotations-3.3.0.ga.jar hibernate-core-3.3.2.GA.jar hibernate-entitymanager-

在我的应用程序中,我使用了Hibernate、ApacheCommons日志和Log4J。但是没有生成我的日志文件。这是因为Hibernate使用slf4j吗

在我的类路径中,我有以下jar

  • hibernate-3.2.7.ga.jar
  • hibernate-annotations-3.4.0.GA.jar
  • hibernate-commons-annotations-3.3.0.ga.jar
  • hibernate-core-3.3.2.GA.jar
  • hibernate-entitymanager-3.4.0.GA.jar
  • slf4j-api-1.5.6.jar
  • slf4j-jcl-1.5.6.jar
  • commons-logging-1.1.1.jar
  • log4j-1.2.16.jar
  • log4j.properties
我发现Hibernate使用slf4j。我希望通过以下途径委派日志记录-

slf4j api->slf4j jcl->commons日志->log4j

但是我既没有得到Hibernate日志,也没有得到我的应用程序日志


原因可能是什么?

从3.3版开始,Hibernate确实使用了SFL4J而不是JCL(这是),并且依赖项将对SLF4J的调用委托给JCL看起来是正确的

但是,为什么您同时拥有
hibernate-3.2.7.ga.jar
(顺便说一句,它使用Commons日志)
hibernate-core-3.3.2.ga.jar
?我想知道这是否不会引起任何冲突。尝试清理类路径,看看在启动时是否没有任何错误跟踪

但我个人会试图摆脱JCL,而不是授权给它。如果你有 使用JCL的代码,如果JCL不是正式需求,则将
commons-logging-1.1.1.jar
替换为
JCL-over-slf4j.jar
(桥接)

另见

我在这里要说的是,我已经解决了这个问题

我正在使用,jar中有一个log4j.properties。它是在我的应用程序的log4j.properties之前加载的。我已经颠倒了顺序,现在它可以工作了


感谢各位,特别是帮助我使用Hibernate JAR。

在我的项目中,我只将Hibernate用作JPA提供商。但是我对要使用的Hibernate jar集感到困惑。正如您所建议的,我从类路径中排除了Hibernate-3.2.7.ga.jar,并且没有问题。谢谢你指出我的错误。但是,日志文件不会像往常一样生成。