log4j
私は過去に一緒に働いたことがあります。今、私は新しいプロジェクトを偵察していて、それが を使用していることに気づきましたslf4j 1.7.2
。java.util.logging、log4j、logbackなど、それに準拠するさまざまな実装に簡略化されたインターフェイス (AKA ファサード) を提供する API 仕様にすぎないことを理解しています。しかし、commons-logging
API Web サイトのリストには記載されていませんでしたが、その jar はこのアプリのクラスパスにありました。クラスパスから削除して、使用されている実装であるかどうかを確認したところ、実際に次のようになっていることが確認されました。
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
commons-logging は本当に slf4j のデフォルトの実装ですか? ドキュメントに次のように記載されているためです。
クラスパスにバインディングが見つからない場合、SLF4J はデフォルトでノーオペレーション実装になります。
上記のリンク先のページで。slf4j-nop-1.7.2.jar
そして、上記のデフォルトの実装がそうであると推測しているクラスパスにあるにもかかわらずorg/apache/commons/logging/LogFactory
、コモンズがクラスパスにないかどうかを尋ねる例外が依然として発生するため、混乱しています。
説明をいただければ幸いです。