Buenas gente, estoy agregando los logs de log4j en mi aplicacion y me surgio la necesidad de agregar o inventar una ruta para el archivo de logs. En otra palabras, quiero que el archivo de logs no este por defecto a donde lo indicamos en el archivo log4j.properties:
Código:
log4j.appender.file.File=C:\\Tools\\apache-tomcat-7.0.21\\webapps\\test-security-client\\loging.log
Por lo que, por ejemplo, me gustaria cargar la ruta dependiendo con que version de tomcat lo ejecute, por que si no, si o si tiene que existir esa ruta (y puede que no).
Eh estado mirando varios post, tratando de buscar una respuesta y la respuesta mas aceptable dice (traducido):
Código:
log.dir=/var/log/foo
rrd.dir=${log.dir}/rrd
datestamp=yyyy-MM-dd/HH:mm:ss.SSS/zzz
roll.pattern.hourly=.yyyy-MM-dd.HH
roll.pattern.daily=.yyyy-MM-dd
# catchAll.log -- Default catch-all.
log4j.rootLogger=DEBUG, defaultLog
log4j.appender.defaultLog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.defaultLog.DatePattern=${roll.pattern.daily}
log4j.appender.defaultLog.File=${log.dir}/catchAll.log
log4j.appender.defaultLog.layout=org.apache.log4j.PatternLayout
log4j.appender.defaultLog.layout.ConversionPattern=%d{${datestamp}} [%t] %-5p %m%n
Cita: Traduccion: Mucha gente se queja de que log4j te fuerza a hardcodear la ubicacion del archivo de logs. Pero, es posible elegir la ubicacion de este archivo, especialmente si usas la propiedad de sustitucion ${log.dir}, asi es como es:
String dynamicLog = // log directory somehow chosen...
Properties p = new Properties( Config.ETC + "/log4j.properties" );
p.put( "log.dir", dynamicLog ); // overwrite "log.dir"
PropertyConfigurator.configure( p );
Creo que la solucion es lo que ando buscando, el tema es que no se me ocurre de hacerlo!. Y aca me entran las dudas:
1- El archivo log4j.properties de log4j no es lo primero que se carga?
2- Para agregar ese codigo que modifica la variable log.dir, tengo que crear una nueva clase? como hago para ejecutarla antes que se cargue log4j.properties o es despues? (creo que me hice un nudo de conceptos!)
Estoy usando Spring y soy bastante nuevo con todo! jeje...
Alguien me podria tirar un salvavidas o aclararme los conceptos??
Gracias por leer de antemano!! Saludos!