【问题标题】:Log files not generated with Hibernate and slf4j不是使用 Hibernate 和 slf4j 生成的日志文件
【发布时间】:2011-03-20 02:43:12
【问题描述】:

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

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

  • 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

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

可能是什么原因?

【问题讨论】:

    标签: hibernate log4j slf4j


    【解决方案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.jar 替换为 jcl-over-slf4j.jarJCL-over-SLF4J 桥)。

    另见

    【讨论】:

    • 在我的项目中,我只使用 Hibernate 作为 JPA 提供程序。但我对要使用的 Hibernate jar 集感到困惑。
    • 我按照您的建议从类路径中排除了 hibernate-3.2.7.ga.jar 并且没有问题。谢谢你指出我的错误。然而,日志文件不会像往常一样生成。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-28
      • 1970-01-01
      • 2014-08-31
      • 2015-07-03
      • 1970-01-01
      • 2016-05-12
      • 1970-01-01
      • 2021-02-14
      相关资源
      最近更新 更多