1

SLF4Jを使用して、JUL(Java Utils Logging)のランタイムバインディングでロギングを処理するJavaアプリを作成しています。したがって、私のクラスパスにslf4j-api-1.6.4.jarslf4j-jdk14-1.6.4.jarその上にあります。

JULはを介して構成できるlogging.propertiesため、クラスパスでもJULが必要になります。

すべてのサードパーティの依存関係が同じJUL構成にログに記録されるようにするために、次のすべてのブリッジもクラスパスに配置することを計画しています。

  • jcl-over-slf4j-1.6.4.jar
  • log4j-over-slf4j-1.6.4.jar

JCLはを介して構成されcommons-logging.properties、Log4Jはを介して構成されますlog4j.properties

私の質問:クラスパスを設定する必要がありcommons-logging.propertiesますlog4j.propertiesか、それともSLF4Jブリッジのためにこれは不要ですか?

必要はないと90%確信していますが、ここで健全性チェックが必要です。私の理論では、ブリッジは通常のJCL / Log4Jクラスを、SLF4JAPI呼び出しを盲目的に呼び出すスタブに置き換えます。

これらのSLF4JAPI呼び出しは、私のコードと同様に、実行時にバインドする実装を使用します。私の場合のバインディングはJULなので、logging.properties必要なのはファイルだけです。

しかし、私は伐採の専門家ではないので、後悔するよりは安全だと思います。したがって、これらの追加の構成ファイルが必要ですか。必要な場合は、SLF4Jがどのように機能するかをよりよく理解できるように、その理由を説明してください。前もって感謝します!

4

1 に答える 1

1

commons-logging.propertiesいいえ、クラスパスに配置する必要はありませんlog4j.properties。SLF4J ブリッジのため、これは不要です。花嫁に対するあなたの理解は正しいです。

Maven を使用している場合は、Banned Dependenciesエンフォーサー ルールを使用して、log4j、commons-logging、または logback への依存を回避することをお勧めします。

于 2012-08-11T11:44:35.643 に答える