Logback常用配置詳細


logbackはログフレームで、log 4 jの最適化版で、同じ作者によって開発され、速度と性能は他のログフレームを超えています.また、slaf 4 jと結合して、現在最も人気のあるログフレームになりました.
Logbackは、classipathでlockback.xmlプロファイルを定義してログを出力するのが一般的です.

<configuration debug="false" scan="true" scanPeriod="1 seconds">

    <contextName>logbackcontextName>

    <property name="log.path" value="F:\\logback.log" />

    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
              <level>ERRORlevel>
        filter>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n
            pattern>
        encoder>
    appender>

    <appender name="file"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zipfileNamePattern>
        rollingPolicy>

        <encoder>
            <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
            pattern>
        encoder>
    appender>

    <root level="debug">
        <appender-ref ref="console" />
        <appender-ref ref="file" />
    root>

    <logger name="com.example.logback" level="warn" />

configuration>
上はよく使われているログプロファイルです.下はノードとの間から各ノードを解析します.
  • 本のノードconfigrationには、以下の属性a.scanがあり、この属性がtrueに設定されている場合、プロファイルが変更されたら、再ロードされ、デフォルト値はtrueとなります.b.scanPeriodは、変更された時間間隔が監視プロファイルに設定されていますが、時間単位が与えられていない場合、デフォルトの単位はミリ秒です.scanがtrueである場合、この属性は有効です.デフォルトの時間間隔は1分です.c.debugは、このプロパティがtrueに設定されている場合、logbackの内部ログ情報を印刷し、logbackの運転状態をリアルタイムで確認します.デフォルトの値はfalseです.
  • contextNameは、ログコンテキスト名を設定し、%contextNameを通じてログコンテキスト名
  • を印刷することができます.
  • propertyは変数を設定するために使用できます.$nameを通じてアクセスできます.以下の属性a.nameがあります.「{name}アクセスのkey b.valueに対して、{name}アクセスのvalue c.fileは、設定ファイルのパスを指定するために使用されます.彼の役割は、複数の設定情報があれば、直接配置ファイルに書くことができます.次に、
    <property file="src/main/java/chapters/configuration/variables.properties" />
    variables.propertiesをfileによって導入し、
    log.path=F:\\demo
    log.name=mylog.log
    によって直接にその値d.resource作用をfileと同様にアクセスすることができますが、これは直接にclaspath経路から構成ファイル
    <property resource="resource.properties" />
  • を導入することができます.
  • apenderフォーマットログ出力ノードは、2つの属性nameとclassがあります.classはどの出力ポリシーを指定しますか?一般的にはコンソール出力ポリシーとファイル出力ポリシーです.APpenderは、一時ノード:a.filter、ログ出力ブロックを持っています.カスタムスクリーンもシステムのいくつかの定義されたブロック
    /**
    *        
    * @author liuxg
    * @date 2016 4 28    3:36:23
    */
    public class MyFilter extends Filter<ILoggingEvent> {
    
    @Override
    public FilterReply decide(ILoggingEvent event) {
    
        if (event.getMessage().contains("sample")) {
            return FilterReply.ACCEPT; //     
        } else {
            return FilterReply.DENY; //     
        }
    }
    }
    
    を使って、最大のカスタム出力を提供してもいいです.もしシステム定義のスクリーンセーバを使う必要があれば、例えば、私たちは、ThreshldFilterを用いてERRORレベル以下のログをフィルタリングしてファイルに出力しない
    <filter   class="ch.qos.logback.classic.filter.ThresholdFilter">
    <level>ERRORlevel>
    filter>
    b.encoderとpatternノードを組み合わせて、具体的な出力のためのログフォーマットc.fileノードを使用してログファイルの出力位置を指定します.絶対パスであっても良いです.rollingPolicyログロールバックポリシーをここでTimesedRollingを使用しました.時間のロールバックポリシーに基づいて、一時ノードfileNamePatternで、必要なノードで、指定時間のログファイリングを設定するために使用することができます.例えば、上記の例は毎日ログをzipパッケージmaxHistoryにアーカイブしています.オプションノードで、保留されているファイリングファイルの最大数を制御して、数量を超えたら古いファイルを削除します.例えば30日後に設定します.古いログはtotalSizeCapを削除されます.オプションノードはログファイルの上限サイズを指定します.例えば3 GBに設定すると、この値になると、古いログはTimeBasedRollingPolicyポリシーを使う以外に、SizendTimeBasedRollingPolicyも使えます.サブノードのmaxFileSizeを設定して、単一のログファイルのサイズを指定します.
    <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>mylog.txtfile>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
      
      <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txtfileNamePattern>
       
       <maxFileSize>100MBmaxFileSize>    
       <maxHistory>60maxHistory>
       <totalSizeCap>20GBtotalSizeCap>
    rollingPolicy>
    <encoder>
      <pattern>%msg%npattern>
    encoder>
    appender>
  • rootノードは、最も基本的なログ出力レベルを指定するために必ずノードを選択します.彼は2つの自分のポイントをappenderを適用することができます.ログ出力をフォーマットします.
    "debug">
    ref ref="console" />
    ref ref="file" />
    
  • .
  • loggerノードは、オプションノードで、パケットのログ出力レベルを特定するために使用され、rootの出力レベル
    <logger name="com.example.logback" level="warn" />
  • をカバーします.