2

私のアプリケーションでは、Hibernate、Apache Commons Logging、および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-logging-> log4j

しかし、Hibernateログもアプリケーションログも取得していません。

理由は何でしょうか?

4

2 に答える 2

1

バージョン 3.3 以降、Hibernate は実際に JCL の代わりに SFL4J を使用し (これはHHH-2696です)、依存関係が SLF4J への呼び出しを JCL に委任することは正しく見えます。

しかし、なぜあなたは両方を持っているのですかhibernate-3.2.7.ga.jar(どちらが Commons Logging を使用していますか) hibernate-core-3.3.2.GA.jar? これが衝突を引き起こさないかどうか疑問に思います。クラス パスをきれいにして、その後起動時にエラー トレースが表示されないかどうかを確認してください。

しかし、個人的には、JCL に委任するのではなく、JCL を取り除こうとします。JCL を使用するコードがあり、JCL が正式な要件ではない場合は、commons-logging-1.1.1.jar( jcl-over-slf4j.jarJCL -over-SLF4Jブリッジ) に置き換えます。

こちらもご覧ください

于 2010-07-23T15:13:03.770 に答える
0

私は問題を解決したことを言及するためにここにいます。

私はを使用していましたが、jar には log4j.properties が含まれています。アプリケーションの log4j.properties の前にロードされていました。私は順序を逆にしましたが、今はうまくいきます!

特に Hibernate jar を手伝ってくれてありがとう。

于 2010-07-27T06:44:47.523 に答える