J'ai le fichier logback.xml suivant:
<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>
Maintenant, lors de l'occurrence d'un événement spécifique, je veux changer par programme le niveau de l'enregistreur racine du débogage à l' erreur . Je ne peux pas utiliser la substitution de variable, il est obligatoire que je le fasse dans le code.
Comment ceci peut être fait ? Merci.
Je suppose que vous utilisez logback (à partir du fichier de configuration).
Depuis le manuel de connexion , je vois
Logger rootLogger = LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);
Peut-être que cela peut vous aider à changer la valeur?
la source
en utilisant logback 1.1.3, j'ai dû faire ce qui suit (code Scala):
la source
Je pense que vous pouvez utiliser MDC pour modifier le niveau de journalisation par programme. Le code ci-dessous est un exemple pour modifier le niveau de journalisation sur le thread actuel. Cette approche ne crée pas de dépendance à l'implémentation de la journalisation (l'API SLF4J contient MDC).
la source
Comme indiqué par d'autres, vous créez simplement
mockAppender
, puis créez uneLoggingEvent
instance qui écoute essentiellement l'événement de journalisation enregistré / qui se produit à l'intérieurmockAppender
.Voici à quoi cela ressemble en test:
la source
Je semble avoir du succès en faisant
Ensuite, pour obtenir une journalisation détaillée de netty, ce qui suit l'a fait
la source