Advertising:
Separar el log en varios ficheros
Separar el log en dos ficheros con log4j[edit]
Usando log4j puede pasarnos que queramos separar la salida de log en dos ficheros distintos, según de dónde venga el log. Por ejemplo, los logs de las clases del paquete chuidiang.prueba1 queremos que vayan a fichero1.log y los del paquete chuidiang.prueba2 a fichero2.log
Podemos hacerlo de la siguiente forma.
En el fichero log4j.properties ponemos dos appenders, uno por fichero
log4j.rootLogger=WARN log4j.appender.A1=org.apache.log4j.FileAppender log4j.appender.A1.File=c:/ficheroA.log log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n log4j.appender.A2=org.apache.log4j.FileAppender log4j.appender.A2.File=c:/ficheroB.log log4j.appender.A2.layout=org.apache.log4j.PatternLayout log4j.appender.A2.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
Ahora, en el mismo fichero, únicamente decimos donde queremos que vaya cada paquete. Para ello, añadimos estas dos líneas
log4j.logger.chuidiang.prueba1=DEBUG,A1 log4j.logger.chuidiang.prueba2=DEBUG,A2
donde decimos que las clases de chuidiang.prueba1 deben usar el appender A1 y que las clases de chuidiang.prueba2 deben usar el appender A2.
En el código, las clases deben obtener el logger con su .class, así
package chuidiang.prueba1; public class Clase1 { private static final Logger log = Logger.getLogger(Clase1.class); ... }
También es posible usar un identificador de texto cualquiera que nosotros queramos en vez de el .class. Por ejemplo, si queremos que todos los logs relativos a base de datos salgan a un fichero, independientemente de qué clase los lance, podemos hacer esto
En el log4j.properties
log4j.appender.A1=org.apache.log4j.FileAppender log4j.appender.A1.File=c:/BaseDatos.log log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n log4j.logger.BaseDatos=DEBUG,A1
y luego, en el código java donde queramos algo que vaya a este fichero
package chuidiang.prueba1; public class Clase1 { private static final Logger log = Logger.getLogger("BaseDatos"); ... }