Comment modifier dynamiquement le niveau de journal dans SLF4j OU Log4J
Récemment, j'ai rencontré une situtation où l'Application Loglevel change de façon dynamique. L'Application Admin permet de l'INFO/DEBUG/AVERTIR de front-end. Basé sur le niveau de journal choisi lui demande d'enregistrement doit être changé.
Je suis sûr que les enregistreurs de soutenir ce scénario, mais vous ne savez pas comment réaliser cela. Si vous avez une idée/pensées sur cette s'il vous plaît laissez-moi savoir.
Merci d'avance pour votre aide.
-Narendra
Vous ne pouvez pas faire cela à l'aide de la SLF4J API; vous devez configurer la journalisation backend (log4j, dans votre cas) à l'aide de sa propre API.
Voulez-vous changer le niveau auquel certains messages sont envoyés dans le cadre de journalisation, ou le niveau qui est utilisé pour filtrer les messages écrits dans le journal?
Pouvez-vous me dire la différence entre les deux?
Double Possible de Réglage du niveau de journal de message lors de l'exécution dans slf4j
Il ya en fait trois façons de modifier le niveau de journalisation. (1) en modifiant le niveau de tous les enregistrement qui est sortie par un appender, (2) modifier le niveau de journalisation de sortie pour une classe spécifique de bûcheron, et (3) modifier le niveau de journalisation des déclarations à des endroits dans le code. Avec
Voulez-vous changer le niveau auquel certains messages sont envoyés dans le cadre de journalisation, ou le niveau qui est utilisé pour filtrer les messages écrits dans le journal?
Pouvez-vous me dire la différence entre les deux?
Double Possible de Réglage du niveau de journal de message lors de l'exécution dans slf4j
Il ya en fait trois façons de modifier le niveau de journalisation. (1) en modifiant le niveau de tous les enregistrement qui est sortie par un appender, (2) modifier le niveau de journalisation de sortie pour une classe spécifique de bûcheron, et (3) modifier le niveau de journalisation des déclarations à des endroits dans le code. Avec
SLF4j
vous ne pouvez pas faire n ° 3, mais vous pouvez en log4j si vous utilisez logger.log("stuff", LEVEL);
depuis LEVEL
pourrait être une variable. Ce dernier serait quelque chose de nécessaire uniquement dans des situations très spécifiques. Il est donc plus probable Narendra signifie modifier le niveau de journalisation par appender.OriginalL'auteur Narendra | 2012-11-18
Vous devez vous connecter pour publier un commentaire.
Envisager Logback http://logback.qos.ch/ - "un successeur du populaire log4j projet, reprenant là où log4j feuilles off". Si vous êtes invité à le faire, logback-classique de numérisation pour des changements dans son fichier de configuration et de se reconfigurer automatiquement lorsque les modifications du fichier de configuration. En outre, vous pouvez contrôler Logback de niveaux de journalisation avec JMX.
OriginalL'auteur Evgeniy Dorofeev
Il n'est pas possible de modifier le niveau de journalisation de façon dynamique dans slf4j, mais certains composants de slf4j de soutien, y compris log4j.
Cette solution a fonctionné pour moi:
(Source: http://prateep.info/2015/12/12/Dynamically-change-log-level-in-SLF4j-Log4J-with-Standalone-Java-Class/)
L'inconvénient de cette solution est qu'elle utilise le backend directement, vous n'êtes pas censé faire lors de l'utilisation de slf4j parce que le point de slf4j est de fournir une abstraction loin de le backend spécifique que vous utilisez.
OriginalL'auteur outofthecave
J'ai dû le faire une fois avec log4j. La seule façon que je pouvais comprendre comment le faire, c'était d'appeler getAllAppenders sur l'objet Logger. Ensuite, une boucle dans les appenders. Si ils étendent la AppenderSkeleton classe (ils doivent), ils auront la setThreshold méthode. Appeler cette méthode avec votre nouveau Niveau en tant que paramètre. Les appels suivants à l'enregistreur de données doit utiliser le nouveau niveau. Cela permettra de régler le niveau dans la mémoire, mais pas dans votre fichier de configuration log4j. Vous pouvez pour ce faire, trop, sauf si elle est modifiée automatiquement lors de l'administrateur change le niveau via le front-end. Si c'est une option, vous pouvez envisager la suite de Evgeniy Dorofeev des conseils et de l'utilisation logback. Il semble que ça serait plus facile.
OriginalL'auteur David A