Suscríbase a la newsletter o feed RSS para recibir automáticamente las actualizaciones de blog!

MBean para un cambio en el nivel de registros Log4J caliente


Publicidad


El cambio en caliente (es decir, sin necesidad de reiniciar el "Application Server) es uno de los requisitos suelen ser más frecuentes en el desarrollo de aplicaciones empresariales en Java.
Con el tiempo he podido ver y probar distintas soluciones (más o menos elegante), pero la mayoría de las veces eran bastante laborioso y articulado, y que el hecho es siempre de los colegios electorales en los archivos de configuración o por la invocación de servlet manualmente para log4j.properties recargar el archivo o log4j.xml cambiado.
Hoy en día con la ayuda de la primavera y, en particular, la clase org.springframework.jmx.export.MBeanExporter ", se convierte en muy fácil de crear un MBean puede exponer todos los métodos necesarios para manipular un caliente" Logger ".

Ahora aplicación al por menor; lo que necesitamos para empezar es una clase simple que puede exponer los métodos para manipular los madereros:

 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(); } } 

El siguiente paso en la exportación de la clase "Log4jConfigurator" como MBean primavera a través de:

 <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" /> 

En este punto, una vez que desplegar nuestra aplicación, tenemos la MBean "n2h: log4jConfigurator" lo que significa que cualquier consola JMX pondrá a disposición de todos los métodos de la clase "Log4jConfigurator".



¿Te ha gustado este artículo? Regístrese ahora para recibir actualizaciones de noticias o artículos:
Suscribirse a feeds RSS escribir en el feed RSS


Aún no comentario "

Comentarios feed RSS para este puesto. TrackBack URI

Déjanos tu comentario

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


Nothing2Hide © 2006 Todos los derechos reservados.

Licencia | Descargo de responsabilidad

Cerrar
Enviar e-mail