Ich habe die folgende logback.xml-Datei:
<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>
Wenn nun ein bestimmtes Ereignis eintritt, möchte ich die Ebene des Root-Loggers programmgesteuert von Debug auf Fehler ändern . Ich kann keine Variablensubstitution verwenden. Es ist obligatorisch, dass ich dies innerhalb des Codes mache.
Wie geht das? Vielen Dank.
Ich gehe davon aus, dass Sie Logback verwenden (aus der Konfigurationsdatei).
Aus dem Logback-Handbuch sehe ich
Logger rootLogger = LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);
Vielleicht kann Ihnen dies helfen, den Wert zu ändern?
quelle
mit logback 1.1.3 musste ich folgendes tun (Scala-Code):
quelle
Ich denke, Sie können MDC verwenden, um die Protokollierungsstufe programmgesteuert zu ändern. Der folgende Code ist ein Beispiel zum Ändern der Protokollierungsstufe für den aktuellen Thread. Dieser Ansatz schafft keine Abhängigkeit von der Logback-Implementierung (SLF4J-API enthält MDC).
quelle
Wie von anderen hervorgehoben, erstellen Sie einfach
mockAppender
eineLoggingEvent
Instanz und erstellen sie dann, die im Wesentlichen das darin registrierte / stattfindende Protokollierungsereignis abhörtmockAppender
.So sieht es im Test aus:
quelle
Ich scheine Erfolg zu haben
Um eine detaillierte Protokollierung von netty zu erhalten, haben Sie Folgendes getan
quelle