2016-03-18 8 views
5

Ich habe diese einfache Logback-Konfigurationsdatei, die zwei Appender und einige benutzerdefinierte Protokollierungsstufen basierend auf dem Paketnamen enthält.Paketspezifische Protokollierungsstufen für verschiedene Logback-Appender

<?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> 

Mit dieser Konfiguration werden die benutzerdefinierten Protokollierungsebenen für beide Appender angewendet.

Wie kann ich es ändern, so dass nur ConsoleAppender diese benutzerdefinierten Protokollierungsstufen verwendet, während FileAppender Standardwerte beibehalten?

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

Dann für die benutzerdefinierte Protokollebenen die INFO_CONSOLE hinzufügen:

Antwort

4

Wenn Sie nicht über einen benutzerdefinierten Filter implementieren möchten, können Sie einen neuen appender mit einem festen Schwellenwert (in Ihnen Fall INFO) erstellen und Ihre FILE Appender. Das Attribut additivity="false" verhindert, dass sich der Logger beim CONSOLE Appender anmeldet, der von root geerbt wurde.

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

Dies sollte mit Ausnahme von myapp.package1DEBUG und über den FILE und CONSOLE Appen, melden die nur INFO und oben zu CONSOLE log wird.

+0

Genau das, was ich brauchte, danke. – Alphaaa

Verwandte Themen