2010-11-22 16 views
5

Quiero que los mensajes específicos generados desde dentro de la misma clase se registren por separado. Entonces, ¿cómo puedo crear 2 tipos diferentes de registradores dentro de la misma clase? Actualmente, el archivo de propiedades se pareceLogger diferente en la misma clase usando Log4J

log4j.rootCategory=DEBUG, O 

# Stdout 
log4j.appender.O=org.apache.log4j.ConsoleAppender 
log4j.appender.O.layout=org.apache.log4j.PatternLayout 
log4j.appender.O.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n 

# File 
log4j.appender.MESSAGE=org.apache.log4j.RollingFileAppender 
log4j.appender.MESSAGE.File=target/logs/messages.log 
# Control the maximum log file size 
log4j.appender.MESSAGE.MaxFileSize=1000KB 
# Archive log files (one backup file here) 
log4j.appender.MESSAGE.MaxBackupIndex=100 
log4j.appender.MESSAGE.layout=org.apache.log4j.PatternLayout 
log4j.appender.MESSAGE.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M   (%  F:% L) - %m%n 
log4j.appender.MESSAGE. 

log4j.category.failedMessagesLog=INFO, MESSAGE 

estoy usando el registro en mi código como: - /** Logger. */

Logger logger = Logger.getLogger(MyClass.class); 
Logger msgLogger = Logger.getLogger("MESSAGE"); 

Tras las pruebas, me sale un archivo de registro vacío (messages.log) creado. ¿Alguna sugerencia?

Respuesta

1
log4j.rootCategory=DEBUG, O 

log4j.appender.O=org.apache.log4j.ConsoleAppender 
log4j.appender.O.layout=org.apache.log4j.PatternLayout 
log4j.appender.O.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n 

log4j.appender.MESSAGE=org.apache.log4j.RollingFileAppender 
log4j.appender.MESSAGE.File=target/logs/messages.log 
log4j.appender.MESSAGE.MaxFileSize=1000KB 
log4j.appender.MESSAGE.MaxBackupIndex=100 
log4j.appender.MESSAGE.layout=org.apache.log4j.PatternLayout 
log4j.appender.MESSAGE.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M 


log4j.appender.**MESSAGE2**=org.apache.log4j.RollingFileAppender 
log4j.appender.**MESSAGE2**.File=target/logs/**messages2**.log 
log4j.appender.**MESSAGE2**.MaxFileSize=1000KB 
log4j.appender.**MESSAGE2**.MaxBackupIndex=100 
log4j.appender.**MESSAGE2**.layout=org.apache.log4j.PatternLayout 
log4j.appender.**MESSAGE2**.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M  

log4j.category.failedMessagesLog=INFO, MESSAGE , **MESSAGE2** 

"failedMessagesLog" es el archivo java a la que se aplica appender (INFO,MESSAGE, MESSAGE1). Acabo de reutilizar el existente RollingFileAppender. puedes usar cualquier otro appender (como fileAppender).

Debe utilizar el nombre correcto de clase Logger logger = Logger.getLogger(MyClass.class) debe cambiarse a private static final Logger log = Logger.getLogger(**failedMessagesLog.class**);

Asegúrese de que está utilizando el registro de log4j es decir

import **org.apache.log4j.Logger**; 
7

Crea dos registradores con diferentes nombres. Puede configurarlos por nombre. Una forma sencilla de hacerlo es agregar un sufijo a su nombre de clase. p.ej.

Log log1 = LogFactory.getLog(getClass().getName()+".log1"); 
Log log2 = LogFactory.getLog(getClass().getName()+".log2"); 

en su archivo de propiedades.

log4j.category.mypackage.myclass.log1=INFO, MESSAGE1 
log4j.category.mypackage.myclass.log2=INFO, MESSAGE2 
+0

estoy en mi registro de código como: –

+0

Logger failedMessagelogger = Logger.getLogger (MyClass.class); –

+0

Para crear un registrador en contexto estático, intente: Logger log1 = Logger.getLogger (MyClass.class.getName() + ". Log1"); – Darron

Cuestiones relacionadas