155 votes

Comment changer la racine de niveau d'enregistrement par programmation

J'ai le texte suivant logback.xml fichier:

<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 la survenance d'un événement spécifique, je veux modifier par programmation au niveau de la racine de l'enregistreur de données de débogage à l' erreur. Je ne peux pas utiliser la substitution de variable, il est obligatoire que je ne présente dans le code.

Comment peut-il être fait ? Merci.

264voto

dogbane Points 85749

Essayez ceci:

import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;

Logger root = (Logger)LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
root.setLevel(Level.INFO);

Notez que vous pouvez aussi dire logback pour analyser régulièrement votre fichier de configuration comme ceci:

<configuration scan="true" scanPeriod="30 seconds" > 
  ...
</configuration> 

12voto

Raghuram Points 26896

Je suppose que vous êtes en utilisant logback (à partir du fichier de configuration).

De logback manuel, je vois

Logger rootLogger = LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);

Peut-être cela peut vous aider à modifier la valeur?

5voto

Stephen C Points 255558

Je ne suis pas sûr, mais pensez-vous obtenir la racine logger en appelant LoggerFactory.getLogger(String), à l'aide de Logger.ROOT_LOGGER_NAME comme le nom de l'enregistreur.

Au moins, c'est ce que l' logback manuel dit.

Vous devriez alors être en mesure d'appeler setLevel(Level) ... selon le manuel. Mais je pense que vous devez d'abord lancer le Logger pour lancer l'Enregistreur de données d' ch.qos.logback.classic.Logger.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X