web-dev-qa-db-ja.com

SLF4Jはスレッドセーフですか?

複数のスレッド間で共有される単一のインスタンスを持つDogクラスがあるかもしれません。すべてのロギングにSLF4Jを使用する予定です。

public class Dog {
    private Logger logger = LoggerFactory.getLogger(Dog.class);

    // ...etc.
}

私のloggerインスタンススレッドは安全ですか?なぜ/なぜそうではないのですか?

23
user1768830

確かに、誰もがLoggerがスレッドセーフになると想定しています。ただし、ファサードの背後にある実装クラスのコード/ javadocsを見て、絶対に確実にする必要があります。

特定の実装の場合:

(明らかに、これらはそれぞれのコードがスレッドセーフに設計されているというステートメントです。常にバグが存在する可能性があります。たとえば、currentlyいくつかのオープンスレッドセーフバグ Log4j 2トラッカー 、ただしこれらのバグがyourの例に直接影響するようには見えませんがコード。)

39
Stephen C