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