2

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

在我的类路径中,我有以下罐子。

  • 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-logging -> log4j

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

可能是什么原因?

4

2 回答 2

1

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

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

但我个人会尝试摆脱 JCL 而不是委托给它。如果您有一些使用 JCL 的代码并且如果 JCL 不是正式要求,请替换commons-logging-1.1.1.jarjcl-over-slf4j.jar(a JCL-over-SLF4J bridge)。

也可以看看

于 2010-07-23T15:13:03.770 回答
0

我在这里提到我已经解决了这个问题。

我正在使用妻子,罐子里有一个 log4j.properties。它在我的应用程序的 log4j.properties 之前被加载。我已经颠倒了顺序,它现在可以工作了!

谢谢大家,特别是帮助我解决 Hibernate jars 问题。

于 2010-07-27T06:44:47.523 回答