2010-11-22 4 views
5

Je souhaite que les messages spécifiques générés à partir de la même classe soient enregistrés séparément. Donc, comment puis-je créer 2 types de loggers différents dans la même classe. À l'heure actuelle, le fichier de propriétés ressembleEnregistreur différent dans la même classe à l'aide de 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 

J'utilise l'enregistrement dans mon code comme: - /** Logger. */

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

Lors de tests, je reçois un fichier journal vide (messages.log) créé. Des suggestions?

Répondre

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" est le fichier java auquel Appender (INFO,MESSAGE, MESSAGE1) est appliqué. Je viens de réutiliser RollingFileAppender existant. vous pouvez utiliser n'importe quel autre appender (comme fileAppender).

Vous devez utiliser le nom de classe droit Logger logger = Logger.getLogger(MyClass.class) doit être remplacé par private static final Logger log = Logger.getLogger(**failedMessagesLog.class**);

Assurez-vous que vous utilisez la journalisation de log4j-à-dire

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

Créez deux enregistreurs avec des noms différents. Vous pouvez les configurer par nom. Une manière simple de faire ceci est d'ajouter un suffixe à votre nom de classe. par exemple.

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

dans votre fichier de propriétés.

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

Je vous connecter mon code comme: –

+0

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

+0

Pour créer un enregistreur en contexte statique, essayez: Logger log1 = Logger.getLogger (MyClass.class.getName() + ".log1"); – Darron

Questions connexes