2016-03-18 8 views
5

この単純なLogback設定ファイルには、2つのアペンダーとパッケージ名に基づくカスタムログ出力レベルが含まれています。異なるLogbackアペンダーのパッケージ固有のログレベル

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE xml> 
<configuration> 

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> 
     <encoder> 
      <charset>UTF-8</charset> 
      <pattern>%date{HH:mm}\t%-5level\t%msg%n</pattern> 
     </encoder> 
    </appender> 

    <appender name="FILE" class="ch.qos.logback.core.FileAppender"> 
     <file>my_logger.log</file> 
     <encoder> 
      <charset>UTF-8</charset> 
      <pattern>%date{dd MMM HH:mm}|%class{0}|%-5level|%msg%n</pattern> 
     </encoder> 
    </appender> 

    <!-- custom logging levels --> 
    <logger name="myapp.package1" level="INFO" /> 
    <logger name="myapp.package2" level="INFO" /> 

    <root> 
     <appender-ref ref="CONSOLE" /> 
     <appender-ref ref="FILE" /> 
    </root> 

</configuration> 

この構成では、カスタムロギングレベルが両方のアペンダーに適用されます。

FileAppenderはデフォルトレベルに固定されていますが、ConsoleAppenderだけがこれらのカスタムログレベルを使用するように変更することはできますか?カスタムフィルタを実装したくない場合、あなたは(あなたの場合INFOで)一定の閾値と新しいアペンダを作成することができます

答えて

4

<appender name="INFO_CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> 
    ... 
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> 
     <level>INFO</level> 
    </filter> 
</appender> 

その後、カスタムログレベルがINFO_CONSOLEを追加するためにあなたのFILEアペンダー。 additivity="false"属性は、rootから継承されたCONSOLEアペンダーにロガーがログするのを防ぎます。

<logger name="myapp.package1" additivity="false"> 
    <appender-ref ref="INFO_CONSOLE" /> 
    <appender-ref ref="FILE" /> 
</logger> 

これはのみCONSOLEからINFOと上を記録しますmyapp.package1を除くFILECONSOLEアペンダにDEBUGと上を、ログインする必要があります。

+0

まさに私が必要としたものです、ありがとうございます。 – Alphaaa

関連する問題