2010-11-12 6 views
3

Je dois mettre les informations du journal dans deux fichiers journaux distincts en fonction de certaines conditions.Comment faire cela. voici mon fichier logging.propertiesFileappenders multiples dans log4j

log4j.rootLogger=debug, stdout, R 
log4j.appender.stdout=org.apache.log4j.RollingFileAppender 
log4j.appender.stdout.File=${catalina.home}/logs/std.log 
log4j.appender.stdout.MaxFileSize=200KB 
log4j.appender.stdout.MaxBackupIndex=2 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d [%c] %p - %m%n 


log4j.appender.R=org.apache.log4j.RollingFileAppender 
log4j.appender.R.File=${catalina.home}/logs/demo.log 
log4j.appender.R.MaxFileSize=200KB 
log4j.appender.R.MaxBackupIndex=2 
log4j.appender.R.layout=org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=%d [%c] %p - %m%n 
+0

De quel état s'agit-il? – MarrLiss

+0

pour une classe java je veux imprimer le journal a.log pour les autres je veux imprimer les logs b.log – Lalchand

+0

pls mettre le code dans le bloc de code – Asaf

Répondre

0

En fonction de votre état, vous pouvez saisir différents enregistreurs.

Logger x = predicate() ? Logger.getLogger("wombat") : Logger.getLogger("other"); 

http://logging.apache.org/log4j/1.2/manual.html (pour le code correspondant Chercher "Wombat".)

+0

Logger logg = Logger.getLogger ("stdout"); logg.info ("un peu de texte") Logger logger = Logger.getLogger ("R"); logger.info ("test") mais les deux sont en train d'imprimer dans les mêmes fichiers journaux – Lalchand

+0

@Lalchand peut-être que vous manquez la partie 'log4j.additivity'? Je sais que ce post est vieux et vous l'avez probablement déjà résolu. :) – Qben

0

Si vous voulez fichier différent pour un enregistreur, vous devez écrire quelque chose comme ceci:

log4j.logger.LOGGER_ONE=DEBUG, stdout 
log4j.logger.LOGGER_TWO=WARN, R 
9

Vous pouvez définir plusieurs appenders et assigner des paquets java aux appenders. Dans l'exemple ci-dessous, toutes les classes de com.mycorp.web se connecteront à web.log au niveau DEBUG et les classes au com.mycorp.db se connecteront à db.log au niveau INFO.

log4j.rootLogger=debug, weblogger, dblogger 

#Define which packages use which appenders 
log4j.logger.com.mycorp.web=DEBUG,weblogger 
log4j.logger.com.mycorp.db=INFO,dblogger 

#Ensure the logs don't add to each other 
log4j.additivity.com.mycorp.web=false 
log4j.additivity.com.mycorp.db=false 

#Define web appender 
log4j.appender.weblogger=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.weblogger.File=/var/log/myapp/web.log 
log4j.appender.weblogger.DatePattern='.'yyyy-MM-dd 
log4j.appender.weblogger.Append=true 
log4j.appender.weblogger.layout=org.apache.log4j.PatternLayout 
log4j.appender.weblogger.layout.ConversionPattern=%d [%t] %-5p %c{1} - %m %n 

#Define db appender 
log4j.appender.dblogger=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.dblogger.File=/var/log/myapp/db.log 
log4j.appender.dblogger.DatePattern='.'yyyy-MM-dd 
log4j.appender.dblogger.Append=true 
log4j.appender.dblogger.layout=org.apache.log4j.PatternLayout 
log4j.appender.dblogger.layout.ConversionPattern=%d [%t] %-5p %c{1} - %m %n 
+1

Merci beaucoup. A beaucoup aidé. J'ai joué du violon toute la journée ... –