S'abonner à la newsletter ou flux RSS pour recevoir automatiquement les mises à jour de blog!

MBean pour un changement dans le niveau de chaud journaux log4j



Le changement à chaud (c'est-à-dire sans redémarrer le 'Application Server) est l'une des conditions généralement plus fréquentes dans le développement d'applications d'entreprise en Java.
Au fil du temps, j'ai pu voir et essayer différentes solutions (plus ou moins élégant), mais la plupart du temps ont été plutôt laborieuse et articulé, et ce fait est toujours de bureaux de vote sur les fichiers de configuration ou en invoquant servlet manuellement pour recharger le fichier log4j.properties ou log4j.xml changé.
Aujourd'hui, avec l'aide de printemps et en particulier la classe org.springframework.jmx.export.MBeanExporter ", il devient très facile de créer un MBean peut exposer toutes les méthodes nécessaires pour manipuler un chaud" Logger ".

Nous avons maintenant la mise en œuvre de détail; ce dont nous avons besoin pour commencer est une simple classe qui peut exposer les méthodes pour manipuler les enregistreurs de frappe:

 package net.nothing2hide.jmx; import java.util.Enumeration; import java.util.List; import java.util.Vector; import org.apache.log4j.Level; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; public class Log4jConfigurator { /** * Set the log level to INFO for the target logger * @param target The name of the logger to change */ public void enableInfo(String target) { LogManager.getLogger(target).setLevel(Level.INFO); } /** * Set the log level to WARN for the target logger * @param target The name of the logger to change */ public void enableWarn(String target) { LogManager.getLogger(target).setLevel(Level.WARN); } /** * Set the log level to ERROR for the target logger * @param target The name of the logger to change */ public void enableError(String target) { LogManager.getLogger(target).setLevel(Level.ERROR); } /** * Set the log level to DEBUG for the target logger * @param target The name of the logger to change */ public void enableDebug(String target) { LogManager.getLogger(target).setLevel(Level.DEBUG); } /** * Set the log level to INFO for the ROOT logger */ public void enableInfoGlobally() { LogManager.getRootLogger().setLevel(Level.INFO); } /** * Set the log level to WARN for the ROOT logger */ public void enableWarnGlobally() { LogManager.getRootLogger().setLevel(Level.WARN); } /** * Set the log level to ERROR for the ROOT logger */ public void enableErrorGlobally() { LogManager.getRootLogger().setLevel(Level.ERROR); } /** * Set the log level to DEBUG for the ROOT logger */ public void enableDebugGlobally() { LogManager.getRootLogger().setLevel(Level.DEBUG); } /** * @return The list of all the available loggers */ public String listAvailableLoggers(){ Enumeration en = LogManager.getLoggerRepository() .getCurrentLoggers(); StringBuffer res = new StringBuffer(); while(en.hasMoreElements()){ Logger logger = (Logger)en.nextElement(); res.append(logger.getName()).append("n"); } return res.toString(); } } 

La prochaine étape de l ' «exportation de la classe" Log4jConfigurator "que par le biais de MBean Printemps:

 <bean id="myMBeansExporter" class="org.springframework.jmx.export.MBeanExporter" lazy-init="false"> <property name="beans"> <map> <entry key="n2h:name=log4jConfigurator" value-ref="log4jConfigurator"/> </map> </property> <property name="registrationBehaviorName" value="REGISTRATION_REPLACE_EXISTING" /> </bean> <bean id="log4jConfigurator" class="net.nothing2hide.jmx.Log4jConfigurator" /> 

À ce point, une fois de déployer notre application, nous avons le MBean "N2H: log4jConfigurator", qui désigne toute console JMX mettra à la disposition toutes les méthodes de la classe "Log4jConfigurator."



Vous avez aimé cet article? Inscrivez-vous maintenant pour recevoir les mises à jour ou des articles de presse:
Abonnez-vous aux flux RSS écrire au flux RSS


Toujours pas de commentaire "

Fil RSS des commentaires pour cet article. TrackBack URI

Laisser un commentaire

XHTML: <a href="" title="fete_christel <abbr title="fete_christel <acronym title="fete_christel <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


Nothing2Hide © 2006 Tous droits réservés.

License | Déni de responsabilité

Fermer
Envoyer un e-mail