slf4j に特定のログ プロバイダー (私の場合は logback) を強制的に使用させる方法はありますか? 彼らのドキュメントのように:
クラスパスで複数のバインディングが見つかりました
SLF4J API は、一度に 1 つだけの基礎となるロギング フレームワークとバインドするように設計されています。クラスパスに複数のバインディングが存在する場合、SLF4J は警告を発し、それらのバインディングの場所をリストします。クラスパスで複数のバインディングが使用可能な場合は、使用するバインディングを 1 つだけ選択し、他のバインディングを削除します。たとえば、クラス パスに slf4j->simple-1.6.6.jar と slf4j-nop-1.6.6.jar の両方があり、nop (>no-operation) バインディングを使用する場合は、slf4j- を削除します。クラスパスから simple-1.6.6.jar。不要なバインディングを削除できない場合でも、SLF4J は 1 つのロギング フレームワーク/実装にバインドします。バージョン 1.6.6 の時点で、SLF4J は実際にバインドされているフレームワーク/実装クラスに名前を付けます。
注 SLF4J によって発行される警告は、単なる警告です。
私の場合、クラスパスにlog4j.jar
、、、およびすべての logback jar があります。一緒に持っているのは間違いであることは知っていますが、私のプロジェクトは非常に大きく、maven の依存関係を見つけて除外するのは必ずしも簡単ではありません。この場合、logback 構成のみを使用するため、slf4j は警告を出力しませんでした。この壺地獄を理解するのに一日かかった。slf4j-log4j12.jar
log4j-over-slf4j.jar
slf4j-log4j12.jar
log4j-over-slf4j.jar
私が望むのは、たとえば、JVM引数を介してslf4jにログバックを強制的に使用させることだけです。これにより、警告を出力し、将来jarを除外できます。