8
votes

Java - changez de manière dynamique niveau de journalisation

J'aimerais pouvoir dire à la JVM d'arrêter de connecter un certain niveau de messages à un moment de la chaîne d'exécution. À un moment donné, je veux seulement enregistrer des messages avec niveau grave , alors je pensais faire cela: xxx

est là un moyen plus propre d'obtenir la même logique, c'est-à-dire Définissez une variable globale qui empêcherait d'imprimer pour vous connecter sauf si sévère? J'ai besoin de distinguer entre la sortie de la console (dans le test) et la sortie de fichier en direct, donc je pourrais potentiellement régler ces niveaux sur le gestionnaire (console et fichier)?


2 commentaires

Je pense que vous avez besoin de fichiers de propriétés de journalisation Java. Cochez cette case JavaPracces.com/topic/topicaction.do?id=143


Non, je veux utiliser des changements dynamiques


3 Réponses :


2
votes

Pour contrôler votre configuration de l'application Dynamiquement, une manière courante est d'utiliser JMX.

JConsole, une partie de la JDK, vous permet de contrôler les MBEANs manuellement, mais vous pourriez également y accéder de manière programmative.

Vous pouvez utiliser JMX pour contrôler Mbeans comme décrit dans Cette page .


0 commentaires

0
votes

avec log4j Vous pouvez modifier le niveau de l'enregistreur racine.

Ceci peut fonctionner: P>

logManager.getLogger( "" ).setLevel(Level.SEVERE);


0 commentaires

7
votes

Répondre à ma propre question:

C'est exactement ce dont j'avais besoin: xxx


1 commentaires

Cela a fonctionné pour moi aussi. L'avantage de cette approche pure Java est que je peux aussi le faire à Groovy, lorsque les bibliothèques ont trop de journalisation au niveau par défaut (je vous regarde Apache Sshd).