2011-12-12 13 views
6

Estoy creando una solución para el registro de mi aplicación, que tiene varios tipos de registro (usuario, aplicación, etc.), quería guardar cada tipo de registro en un archivo por separado.Múltiples archivos de registro con log4j

Esto es posible con log4j o alguna otra API? ¿Cómo podría hacer eso?

Si lo consideras interesante, edito la pregunta y pongo los códigos, pero no creo que valga la pena, todavía son muy básicos.

Gracias de antemano.

+0

¿qué quiere decir con varios tipos de registro? Niveles de registro (DEBUG, INFO, WARN ...) O diferentes clases en las que se produce el código de registro O ¿desea diferentes archivos de registro según el usuario que acaba de pasar por el código? O ¿desea que sea diferente por hilo? ¿nombre? –

+1

posible duplicado de [creating-multiple-log-files-of-different-content-with-log4j] (http://stackoverflow.com/questions/728295/creating-multiple-log-files-of-different-content- with-log4j) –

+0

@olly_uk Creo que no es un duplicado. – caarlos0

Respuesta

22

De cource, utilizar diferentes FileAppenders Ejemplo de internet:

log4j.rootLogger=DEBUG 

# AdminFileAppender - used to log messages in the admin.log file. 
log4j.appender.AdminFileAppender=org.apache.log4j.FileAppender 

log4j.appender.AdminFileAppender.File=admin.log 

log4j.appender.AdminFileAppender.layout=org.apache.log4j.PatternLayout 
log4j.appender.AdminFileAppender.layout.ConversionPattern= %-4r [%t] %-5p %c %x - %m%n 

# ReportFileAppender - used to log messages in the report.log file. 
log4j.appender.ReportFileAppender=org.apache.log4j.FileAppender 

log4j.appender.ReportFileAppender.File=report.log 

log4j.appender.ReportFileAppender.layout=org.apache.log4j.PatternLayout 
log4j.appender.ReportFileAppender.layout.ConversionPattern= %-4r [%t] %-5p %c %x - %m%n 

log4j.logger.com.vaannila.admin=WARN,AdminFileAppender 
log4j.logger.com.vaannila.report=DEBUG,ReportFileAppender 

Ahora puede conectarse a admin.log Logger.getLogger("com.vaannila.admin").log("To admin log") e informar ingrese Logger.getLogger("com.vaannila.report").log("To report log")

+0

No entiendo la parte "Logger.getLogger (" com.vaannila.admin "). Log (" Para el registro de administración ")", ¿cómo log4j sabrá que quiero registrar AdminFileAppender, en ese ejemplo? Intento hacer algo similar aquí, pero no funciona ... – caarlos0

+1

log4j.logger'com.vaannila.admin' = WARN, AdminFileAppender esta propiedad dice que si inicia sesión en 'com.vaannila.admin' o 'com.vaannila.admin.xxx.yyy.zzz' luego use AdminFileAppender (que es FileAppender con el archivo 'admin.log') – korifey

+0

hmm, ahora funciona. Muchas gracias, @korifey, Dios te bendiga. – caarlos0

2

Log4j proporciona registradores y anexos. La forma de hacerlo es tener un Appender para cada archivo que desee. Establecen un conjunto apropiado de Registradores que apuntan al (los) Acelerador (es) apropiado (s). Los registradores generalmente se configuran usando nombres de paquetes. Si esto funciona para usted, el código en el paquete x va al archivo y, simplemente haga eso. De lo contrario, cree los registradores por archivo de salida y haga que el código elija el registrador apropiado. También puede tener Registradores y enviar la información a múltiples Anexos, para que pueda configurarlos según corresponda.

Consulte la publicación de korifey para ver un ejemplo de cómo configurar esto.

Cuestiones relacionadas