Problemas con log4j

Tengo una aplicación en la que estoy intentando usar LOG4J, he hecho algunas pruebas y me funciona bien, lo que pasa es que estoy intentando hacer una cosa, los logs los direcciono a un fichero (asta ahí todo bien) lo que pasa es que quiero que por ejemplo los logs de INFO me vayan a un fichero y los de ERROR a otro. Para ello lo he implementado así, pero no me funciona. ¿Os paso lo que he hecho para ver si me podéis decir lo que hago mal vale? Un saludo.
Primeramente tengo configurado el log4j. Properties así:
log4j.rootLogger=ERROR,A1
log4j.rootLogger=INFO,A2
log4j.appender.A1=org.apache.log4j.FileAppender
log4j.appender.A1.file=dex21.log
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{ISO8601} %t %x %-20c{1} %-5p %m%n
log4j.appender.A2=org.apache.log4j.FileAppender
log4j.appender.A2.file=update.log
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{ISO8601} %t %x %-20c{1} %-5p %m%n
Lo que me pasa es que todos los mensajes me van al mismo fichero. ¿Cómo lo puedo solucionar?

1 Respuesta

Respuesta
1
El problema es que tienes dos appenders para un mismo logger (el root). Deberías declarar un logger para información y otro para errores si deseas que vayan a archivos separados. Desde tu aplicación adquieres el logger respectivo según el tipo de mensajes que quieras registrar (error o info).
log4j.rootLogger=ERROR,A1
log4j.rootLogger=INFO,A2
log4j.logger.MisERRORES=ERROR,A1
log4j.logger.MisINFO=INFO,A2
log4j.appender.A1=org.apache.log4j.FileAppender
log4j.appender.A1.file=dex21.log
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{ISO8601} %t %x %-20c{1} %-5p %m%n
log4j.appender.A2=org.apache.log4j.FileAppender
log4j.appender.A2.file=update.log
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{ISO8601} %t %x %-20c{1} %-5p %m%n
Fíjate en las dos líneas debajo del root. Luego en tu código, accede al logger usando el nombre del mismo (MisERRORES o MisINFO). Esto bifuracará la salida.
Cualquier duda, me avisas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas