knowing logback

5047 ワード

Logbackは、log4jの創始者Ceki Gülcüによって設計されたもう一つのオープンソースログコンポーネントです.logback公式サイトの説明によると、
Logback is intended as a successor to the popular log4j project, picking up where log4j leaves off. logbackは、log4jの代わりに最も一般的なログフレームワークになることを目的としている.Cekiがlog4jを書き換えたカーネルは、log4jを形成し、いくつかの重要な実行経路におけるlogbackの性能をlogbackより10倍以上向上させる.さらにlog4jの初期化メモリロードも小さくなりました.
周知のように、logbackは標準的なログインタフェースであり、slf4jは非常に標準的な実装である.将来的にlogbackを置き換えるのは簡単です.
ここではlogbackのいくつかのコンポーネントを見てみましょう.
appender logbackは、logbackで出力位置を定義するコンポーネントであり、コンソール、ファイル、データベースなどのログ出力の位置を明確にします.appenderのうち2つの最も古典的な実装はlogbackConsoleAppenderである.それ以外にも、非常に実用的な実装がたくさんあります.例えば、などです.
すべての既存の実装が私たちのニーズを満たすことができなければ、logbackはslf 4 jの実装フレームワークとして、非常に良い拡張を提供しています.
もし私たちが自分でappenderを実現する必要があるならば、私たちは新しいクラスを書いて、FileAppenderを継承すればいいです.
public class CountingConsoleAppender extends AppenderBase {
    public void append(ILoggingEvent event) {
        // export the log to custom place
    }
}

Encoder AppenderBaseはlogbackにログをどこに送るかを伝える責任を負い、次に紹介するカラムコンポーネントのいくつかをどのように表示するかを担当し、appenderコンポーネントはログイベントをバイナリストリームの形式に変換して対応する位置に伝える責任を負います.
構成でデフォルトで使用されるEncoderタイプはEncoderです.
layout ch.qos.logback.classic.encoder.PatternLayoutEncoderはログ・ストリームの伝達を担当し、Encoderはログを私たちの習慣に基づいて読むことができる文字に変換する責任を負います.これも、構成layoutの中で最もカスタマイズが必要な部分です.
最も一般的なシーンはlogbackというクラスを使用しています.
普段私たちが構成で使用している構成ch.qos.logback.classic.PatternLayoutのラベルはこのクラスです.

    %d{yyyy-MM-dd HH:mm:ss} |-%-5level ${PID:- } in %-50(%logger[%thread]) : %msg%n


構成内の特定のテンプレート変換語はlogbackの説明を参照できます(http://logback.qos.ch/manual/layouts.html#conversionWord).
filter
logbackでは、自分のニーズに合わせて対応するルールをカスタマイズし、ログをフィルタリングし、チェック時のエラー情報を減らすことができます.このフィルタリングルールのカスタマイズを完了したコンポーネントはpatternです.
各フィルタはfilterメソッドを実装します.このメソッドはdecide()列挙クラスオブジェクトを返します.FilterReplyにはDENY、NEUTRAL、ACCEPTの3種類があります.
  • DENY:ログはすぐに破棄され、他のフィルタ
  • を通過しません.
  • NEUTRAL:整列リストの次のフィルタは、次にログ
  • を処理します.
  • ACCEPT:ログはすぐに処理され、残りのフィルタ
  • を通過しません.FilterReplyの中で最もよく使われるのはfilterかもしれません.LevelFilterは、指定されたログのレベルをフィルタするのに役立ちます.
    例えば、私はLevelFilterのセットに2つのAPPENDERを入れます.
    
        INFO
        ACCEPT
        NEUTRAL
    
    
        ERROR
        ACCEPT
        DENY
    
    

    この上の構成では、各ログがINFOレベルのログかどうかをチェックされ、もしそうであれば受け入れられ、そうでなければ次のfilterに捨てられ、2番目のfilterはERRORレベルかどうかをチェックし始め、レベルがログであれば印刷され、そうでなければ日誌は破棄される.filterを実装したい場合は、filterを継承するクラスを定義できます.ch.qos.logback.classic.filter.Filter種類の中で自分のルールを書けばいいです.
    自分で定義したdecide()filterのようにLevelFilteronMatchの2つのラベルを使用することを望む場合は、onMismatchというクラスを継承することを選択できます.
    Spring Bootとlogbackch.qos.logback.classic.filter.AbstractMatcherFilter成熟したSpring Bootシステムを借りて、Java生態の中で大ブレイクし、SpringSpring Bootを自分のデフォルトログ処理の枠組みとした.
    一般的にlogbackのプロファイルはlogbackとして取り込まれますが、Spring BootでSpringBootの一部のプラグインを使用する必要がある場合は、logback.xmlにプラグインのプロファイルファイル名を設定する必要があります.logback-spring.xmlがロードされるタイミングが早すぎるため、Springはまだlogbackの構成を開始していないため、完了していません.logback.xmlが主に解決する問題は配置問題であり、Spring Bootではまず配置を読み取るのが面倒である.logbackは、プラグインSpring Bootを提供します.
    
    
        ${fluentHost}
        ...
    
    

    これにより、構成ファイルは、springPropertyファイルから対応する構成を自動的に読み取り、application.propertiesでこれらの変数を使用します.logback jarの目的のために、Spring BootSpring Bootのプラグインを提供しています.
    
        
    
    
    
        
    
    
    
        
    
    

    これにより、springProfileは、logbackが当時置かれていた環境に応じて、対応する構成に切り替わる.