SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“.


エラーログは次のとおりです.
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.

プロジェクトで使用されるログはLog 4 j 2とSLF 4 Jで、以下のように依存しています.
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-web</artifactId>
            <version>2.13.3</version>
        </dependency>
          <!-- slf4j -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
        </dependency>
        
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <version>2.13.3</version>
            <scope>test</scope>
        </dependency>

目の先の同級生はもう問題の所在を見抜いたかもしれないが、その時私は完全に見られなかった.もうpomにいるのにxmlにlog 4 j-slf 4 j-implの依存が追加されました.なぜslf 4 jはバインドされたログが見つからないのかを示します.そして、target/webapp/libファイルを見てみると、確かにlog 4 j-slf 4 j-implのjarパッケージは存在しません.mavenに問題があるのではないかと思います.mavenのcleanコマンドを実行し、再配置しても問題が解決していないことがわかります.そして、バージョンが比較的新しいかどうかを考えて、バージョン番号を変更しても解決できません.最後に、log 4 j-slf 4 j-implのjarパッケージtestを突然見つけました.これを外して、問題は解決しました.
プログラムは正常に動作したが、問題は徹底的に解決されなかった.testは私が自分で追加したものではありません.要素全体がMaven中央倉庫からコピーされています.なぜ公式はこの依存にtestを追加したのですか?
私はSLF 4 Jの公式サイトの質疑応答でこのような話を切り取った.
When should SLF4J be used? In short, libraries and other embedded components should consider SLF4J for their logging needs because libraries cannot afford to impose their choice of logging framework on the end-user. On the other hand, it does not necessarily make sense for stand-alone applications to use SLF4J. Stand-alone applications can invoke the logging framework of their choice directly. .
Google翻訳は以下の通りです.
簡単に言えば、ライブラリおよび他の組み込みコンポーネントは、最終ユーザにログフレームワークの選択を押し付けることをライブラリが負担できないため、SLF 4 Jのログ記録要件を考慮しなければならない.一方,独立したアプリケーションがSLF 4 Jを使用することは必ずしも意味があるとは限らない.独立したアプリケーションは、選択したログ・レコード・フレームワークを直接呼び出すことができます.
上記の言葉から分かるように、SLF 4 Jは主にライブラリと組み込みコンポーネントで使用されています.これらのコンポーネントは、特定のログ・フレームワークを構成する必要はありません.SLF 4 Jがlog 4 j-slf 4 j-implのようなjarパッケージを提供するのは、主にテストのためです.