web-dev-qa-db-fra.com

Comment créer 2 enregistreurs ROOT différents avec logback?

J'utilise avec plaisir SLF4J avec déconnexion et j'utilise 2 appenders pour ROOT logger.

<root level="DEBUG">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE" />
</root>

Comment pourrions-nous avoir des niveaux de log différents pour les deux appenders? J'ai toujours besoin de tous les messages ROOT-logger.

  • [~ # ~] débogage [~ # ~] - niveau pour STDOUT
  • [~ # ~] info [~ # ~] - niveau pour FILE

Tous les journaux doivent faire partie de la sortie (donc l'enregistreur ROOT est nécessaire).

41
Dimitri Dewaele

La réponse précédente est incorrecte: vous pouvez avoir plusieurs éléments root, chacun avec une journalisation associée level et un appender-ref (Je travaille avec logback.version> 1.0.13) Dans ce cas, vous devez également mettre un FILTRE à l'intérieur de vos annexes, comme ça:

<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
    <resetJUL>true</resetJUL>
</contextListener>

<!-- To enable JMX Management -->
<jmxConfigurator/>

<appender name="console-info" class="ch.qos.logback.core.ConsoleAppender">
   <filter class="ch.qos.logback.classic.filter.LevelFilter">
     <level>INFO</level>
     <onMatch>ACCEPT</onMatch>
     <onMismatch>DENY</onMismatch>
  </filter>
  <encoder>
        <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
  </encoder>
</appender>  

<appender name="console-debug" class="ch.qos.logback.core.ConsoleAppender">
  <filter class="ch.qos.logback.classic.filter.LevelFilter">
     <level>DEBUG</level>
     <onMatch>ACCEPT</onMatch>
     <onMismatch>DENY</onMismatch>
  </filter>
  <encoder>
      <pattern>[%d{ddMMMyyyy HH:mm:ss.SS}]%-5level %logger{45} - %msg %n</pattern>
  </encoder>
</appender>


<root level="info">
    <appender-ref ref="console-info"/>
</root>
<root level="debug">
    <appender-ref ref="console-debug"/>
</root>
4
m.piunti