11

基本的に、公式のログバック ドキュメントの第 7 章の指示に従いました。残念ながら、正しく動作していないようで、その理由がわかりません。それで、ここにいます。

私が達成したいのは、情報のみをコンソールに記録し、デバッグ以上をすべてログファイルに記録することです。私の中にこれらの行がありますlogback.groovy

appender("CONSOLE", ConsoleAppender) {
    encoder(PatternLayoutEncoder) {
        pattern = "%d{YYYY-MM-dd/HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"
    }
    filter(ThresholdFilter) {
        level = INFO
    }
}

logger("vh.FileIO", DEBUG, ['CONSOLE','FILE-DEBUG'])
root(DEBUG, ['CONSOLE'])

情報と上記のログのみを取得ThresholdFilterすると思いました。CONSOLEただし、 のデバッグ ログは引き続き取得vh.FileIOCONSOLEます。たとえば、コンソールに次のようなものが表示されます。

2013-10-11/21:48:10.537 [main] DEBUG vh.FileIO - Combining all records into file ./output/sip_sample_data_output.csv

それで、私はここで何が欠けていますか?

アップデート

logback の構成をいじってみたところ、XML 構成ファイルを使用すると、ThresholdFilter が期待どおりに機能することがわかりました。ただし、groovy 構成ファイルで機能しない理由を知りたいです。

4

1 に答える 1

5

この問題の解決策は次のとおりです。「logback.groovy」の先頭にクラス ThresholdProvider のインポートを追加するだけです。

import ch.qos.logback.classic.filter.ThresholdFilter

その後、期待どおりに動作します。

単純なプロジェクトで、提供されている「logback.groovy」を試しました。別の問題があります: メッセージがコンソールに 2 回書き込まれます。これは、「ロガー」と「ルート」の呼び出しを微調整することで修正できると思います。

于 2013-12-21T18:22:31.257 に答える