2016-03-18 12 views
5

Ho questo semplice file di configurazione Logback, contenente due appendici e alcuni livelli di registrazione personalizzati in base al nome del pacchetto.Livelli di registrazione specifici del pacchetto per diversi appendici di 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> 

Con questa configurazione, i livelli di registrazione personalizzati vengono applicati per entrambi gli appendici.

Come posso modificarlo in modo che solo ConsoleAppender utilizzi questi livelli di registrazione personalizzati, mentre FileAppender si attacca ai livelli predefiniti?

risposta

4

Se non si desidera implementare un filtro personalizzato, è possibile creare un nuovo appender con una soglia fissa (in voi caso INFO):

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

Poi, per la vostra abitudine livelli di registrazione aggiungere il INFO_CONSOLE e il tuo appender FILE. L'attributo additivity="false" impedisce al registratore di accedere all'applet CONSOLE ereditato da root.

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

Questo dovrebbe registrare DEBUG e soprattutto ai FILE e CONSOLE appenders, tranne che per myapp.package1 che registrerà solo INFO e sopra per CONSOLE.

+0

Esattamente quello di cui avevo bisogno, grazie. – Alphaaa

Problemi correlati