martes, marzo 29, 2011

configurando log4j para una aplicacion web utilizando datos variables

Algunas veces cuando tenemos una aplicacion, que se alojara en diferentes servidores, necesitamos guardar el archivo en diferentes ubicaciones, pero para no estar modificando cada ves nuestra aplicacion, podemos utilizar datos variables, como la ruta del archivo, asi nos podemos casi casi olvidar de configurar las rutas

para el ejemplo necesitamos dar una leida a los 2 anteriores articulos de log4j para realizar esto de una forma rapida

lo que necesitamos realizar es

1.- creamos una clase que herede de nuestro escuchador Log4jConfigListener que tenemos en nuestro web.xml

public class ConfiguradorLog4J extends Log4jConfigListener {
}


2.-
sobre escribimos el constructor de nuestra clase

public ConfiguradorLog4J(){
super();
}

3.-
tenemos de 2 definir en esta clase la ruta (que es poco conveniente por que si queremos cambiar la ruta tenemos que recompilar el proyecto) o obtener la ruta de un archivo properties

en este caso simulare que obtengo la ruta de un archivo properties (el acceso al properties lo explicare en otra entrada)

4.-
en nuestro constructor tendriamos que hacer algo como
System.setProperty("ruta.archivo.log4j", PropertyUtils.getProperty("ruta.archivo.log4j"));


lo que estamos haciendo es agregar a las propiedades del proyecto una nueva propiedad que contiene la ruta de nuestro archivo de log, la propiedad se llamara en este caso
ruta.archivo.log4j y la obtiene de una clase que accesa a un archivo de propiedades

5.-
tenemos que modificar nuestro archivo xml, especificamente donde indicamos la ruta del archivo donde guardaremos los logs

lo cambiariamos por:
param name="file" value="${ruta.archivo.log4j}/archivo_de_log.log" /
ahora cada ves que nuestra aplicacion cambie de servidor o de ruta de logs, solo tenemos que cambiar el archivo de propiedades y reiniciar nuestra aplicacion en el servidor

6.- finalmente, tenemos que cambiar nuestro listener en el archivo web.xml

en ves de tener la siguiente linea:
listener-class
org.springframework.web.util.Log4jConfigListener
/listener-class

por:

listener-class
paquete.de.tu.archivo.de.log.ConfiguradorLog4J
/listener-class

y hemos terminado una configuracion dinamica de nuestro log4j


NOTA: tambien puedes utilizar las propiedades de tu apache o de java, si fuera el caso no es necesario que realizes todos los pasos anteriores, el unico que tendrias que realizar seria el paso numero 5, puedes utilizar variables como:
user.home, java.home etc.

les dejo una pagina con propiedades de java que pueden utilizar, el unico detalle es que algunas cambian de valor en aplicaciones stand alone y web, pues unas toman valores dependiendo del servidor que utilicen

http://www.mindspring.com/~mgrand/java-system-properties.htm

No hay comentarios:

Publicar un comentario