Quelles sont les différentes approches pour la modification de la log4j niveau de journal de façon dynamique, de sorte que je n'ai pas de redéployer l'application. Ces changements permanents dans ces cas?
Réponses
Trop de publicités?Fichier De Chien De Garde
Log4j est capable de regarder le log4j.xml
le fichier des modifications de configuration. Si vous modifiez le fichier log4j, log4j actualise automatiquement les niveaux de journal, selon vos modifications. Consultez la documentation de l' org.apache.log4j.xml.DOMConfigurator.configureAndWatch(String,long
) pour plus de détails. La valeur par défaut de temps d'attente entre les contrôles est de 60 secondes. Ces changements soient persistants, puisque vous modifiez directement le fichier de configuration sur le système de fichiers. Tout ce que vous devez faire est d'invoquer DOMConfigurator.configureAndWatch() une fois.
Attention: configureAndWatch méthode est dangereuse pour l'utilisation dans des environnements J2EE en raison d'un Thread de fuite
JMX
Une autre façon de définir le niveau de journalisation (ou de la reconfiguration en général) log4j est par l'utilisation de JMX. Log4j inscrit son bûcherons comme MBeans JMX. En utilisant les serveurs d'application MBeanServer consoles (ou du JDK jconsole.exe) vous pouvez reconfigurer chaque bûcherons. Ces changements ne sont pas persistantes et serait réinitialisation de la configuration définie dans le fichier de configuration après le redémarrage de votre application (serveur).
Self-Made
Comme décrit par Aaron, vous pouvez définir le niveau de journalisation par programmation. Vous pouvez la mettre en œuvre dans votre application, la façon dont vous voulez qu'il se produise. Par exemple, vous pourriez avoir une interface graphique, où l'utilisateur ou de l'administrateur change le niveau de journal et ensuite appeler l' setLevel()
méthodes sur l'enregistreur. Si vous persistez les paramètres de quelque part ou pas, c'est à vous.
Changer le niveau de journalisation est simple; de modifier d'autres parties de la configuration pose un plus en profondeur.
LogManager.getRootLogger().setLevel(Level.DEBUG);
Les changements sont permanents à travers la vie cyle de l' Logger
. Sur la réinitialisation de la configuration va être lu et utilisé comme paramètre le niveau d'exécution ne persiste pas le changement de niveau.
Mise à JOUR: Si vous utilisez Log4j 2, vous devez supprimer les appels à l' setLevel
par la documentation que cela peut être réalisé via la mise en œuvre des classes.
Les appels à l'enregistreur.setLevel() ou des méthodes similaires ne sont pas pris en charge dans le L'API. Les demandes doivent retirer. Fonctionnalité équivalente est fournis dans le Log4j 2 mise en œuvre des classes mais peut quitter le application sensible aux changements de Log4j 2 internes.