logging - name - ¿Cómo crear 2 registradores ROOT diferentes con logback?
logback pattern (2)
La respuesta anterior es incorrecta : puede tener múltiples elementos root
, cada uno con un level
registro asociado y un appender-ref
(estoy trabajando con logback.version> 1.0.13
) En este caso, también debe colocar un FILTER dentro del suyo appenders, así:
<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>
Estoy felizmente usando SLF4J con logback y uso 2 appenders para el registrador ROOT .
<root level="DEBUG">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
¿Cómo podríamos tener diferentes niveles de registro para ambos appenders? Todavía necesito todos los mensajes ROOT-logger.
- DEBUG -level para STDOUT
- INFO -level for FILE
Todos los registros deben ser parte de la salida (por lo que se necesita el registrador ROOT).
Toda ayuda es cálidamente apreciada. Gracias.
Nunca tendrá más de un registrador de raíz, por lo que su pregunta es un poco engañosa. Lo que estás buscando es cómo afinar los eventos que cada uno de los appenders registra.
Y para eso, agrega un ThresholdFilter a cada uno de los appenders:
http://logback.qos.ch/manual/filters.html#thresholdFilter
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
Configure el nivel INFO para FILE-appender y DEBUG para STDOUT.
Editar: Tengo que disputar la acusación de la otra respuesta de que esta es incorrecta: sí, puede tener más de un elemento raíz en la configuración. Sin embargo, eso no crea más de un registrador de raíz, que es lo que pide el título de la pregunta. Además, el manual de logback indica en http://logback.qos.ch/manual/configuration.html#syntax (destacando el mío):
Sin embargo, la estructura básica del archivo de configuración puede describirse como, elemento <configuration>, seguido de cero o más elementos <appender>, seguidos de cero o más elementos <logger>, seguidos de como máximo un elemento <root>.
Podría funcionar, pero al menos está en contra de la convención.