1

logback 1.0.13 に裏打ちされた Log4J から slf4j にコードを移行しています。

次のコードを slf4j に変換するにはどうすればよいですか?

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;

    // ...  

    ConsoleAppender stderr = new ConsoleAppender();
    stderr.setTarget(ConsoleAppender.SYSTEM_ERR);
    stderr.setLayout(layout);
    stderr.addFilter(new CurrentThreadLogFilter());
    stderr.setThreshold(Level.INFO);
    stderr.activateOptions();

    Logger loggerRECORD = getLoggerRECORD();
    loggerRECORD.setLevel(Level.ALL);
    loggerRECORD.setAdditivity(false);
    loggerRECORD.addAppender(stderr);

    Logger root = LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
    root.setLevel(Level.WARN);
    root.addAppender(stderr);

    // ...

    private Logger getLoggerRECORD() {
         return LoggerFactory.getLogger("com.company.MyClass");
    }

setLeveladdAppenderおよびsetAdditivityメソッドの代わりに何を使用すればよいかわかりません。

4

1 に答える 1

1

私の知る限り、「純粋なSLF4J」になりたい場合は、コードでロガーを構成することはできません(すべきではありません)。構成の詳細は実装固有です。(参照: slf4 FAQ )

Logback を使用することが確実な場合は、次の 2 つのオプションがあります。

  1. コード外で Logback 固有の構成ファイルを使用します。また、

  2. (LoggerFactory から) ロガーを取得すると、それが Logback 実装になることがわかります。したがって、それにキャストしてから、SLF4J からのインターフェースに加えて、サポートされている追加のメソッドを使用します。

最初の (構成ファイル) は変更が容易です。その道を行くことをお勧めします。

2 番目のルートに進みたい場合は、SLF4J からのインターフェイスではなく、Logback からの実際のクラスを処理するようにインポートを変更できます。また、LoggerFactory によって Logger が返されたときにキャストを追加することもできます。

これを行うと、探していた setLevel() および setAdditive() メソッドが Logger クラスでサポートされていることがわかります。詳細については、 Logback javadocsを参照してください。

于 2013-09-06T13:17:27.867 に答える