Tengo el siguiente archivo logback.xml:
<configuration debug="true">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
Ahora, cuando ocurre un evento específico, quiero cambiar programáticamente el nivel del registrador raíz de depuración a error . No puedo usar la sustitución de variables, es obligatorio que lo haga dentro del código.
Cómo puede hacerse esto ? Gracias.
Supongo que está utilizando logback (del archivo de configuración).
Del manual de logback , veo
Logger rootLogger = LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);
¿Quizás esto puede ayudarte a cambiar el valor?
fuente
usando logback 1.1.3 tuve que hacer lo siguiente (código Scala):
fuente
Creo que puede usar MDC para cambiar el nivel de registro mediante programación. El siguiente código es un ejemplo para cambiar el nivel de registro en el subproceso actual. Este enfoque no crea dependencia para la implementación de inicio de sesión (API SLF4J contiene MDC).
fuente
Como lo señalaron otros, simplemente crea
mockAppender
y luego crea unaLoggingEvent
instancia que esencialmente escucha el evento de registro registrado / sucede dentromockAppender
.Así es como se ve en la prueba:
fuente
Parece que estoy teniendo éxito haciendo
Luego, para obtener un registro detallado de netty, lo siguiente lo ha hecho
fuente