2012-09-06 4 views
0

J'ai deux classes et deux fichiers log4j.properties: un fichier pour chaque classe. Tout fonctionne bien. Maintenant, je veux fusionner les deux fichiers de propriétés en un seul. Mais je veux toujours que chaque classe ait son propre fichier journal. Comment je fais ça? J'ai fait ce qui suit mais ça ne marche pas: la classe Abc.java se connecte bien, mais Xyz.java ne se connecte plus à son propre fichier. Notez que Xyz.java obtient un nom de fichier journal dynamique.Fusion de deux fichiers log4j.properties

log4j.appender.CONSOLE=org.apache.  log4j.ConsoleAppender 
log4j.appender.CONSOLE.layout=org.apache.  log4j.PatternLayout 
log4j.appender.CONSOLE.layout.ConversionPattern=%d %-5p %c{1} - %m%n 

log4j.rootLogger=INFO, CONSOLE 

log4j.appender.ABC_ERR_LOG=org.apache.  log4j.RollingFileAppender 
log4j.appender.ABC_ERR_LOG.File=/opt/mysite/var/log/allhere.error.log 
log4j.appender.ABC_ERR_LOG.MaxFileSize=4MB 
log4j.appender.ABC_ERR_LOG.MaxBackupIndex=3 
log4j.appender.ABC_ERR_LOG.layout=org.apache.  log4j.PatternLayout 
log4j.appender.ABC_ERR_LOG.layout.ConversionPattern=%d %-5p %c{1} - %m%n 
log4j.appender.ABC_ERR_LOG.Threshold = WARN 

log4j.appender.ABC_LOG=org.apache.  log4j.RollingFileAppender 
log4j.appender.ABC_LOG.File=/opt/mysite/var/log/allhere.log 
log4j.appender.ABC_LOG.MaxFileSize=8MB 
log4j.appender.ABC_LOG.MaxBackupIndex=3 
log4j.appender.ABC_LOG.layout=org.apache.  log4j.PatternLayout 
log4j.appender.ABC_LOG.layout.ConversionPattern=%d %-5p %c{1} - %m%n 

log4j.appender.XYZ_LOG=org.apache.  log4j.RollingFileAppender 
log4j.appender.XYZ_LOG.File=/opt/mysite/var/log/job-${logfilename}.log 
log4j.appender.XYZ_LOG.MaxFileSize=8MB 
log4j.appender.XYZ_LOG.MaxBackupIndex=3 
log4j.appender.XYZ_LOG.layout=org.apache.  log4j.PatternLayout 
log4j.appender.XYZ_LOG.layout.ConversionPattern=%d %-5p %c{1} - %m%n 

log4j.logger.com.mysite=DEBUG, ABC_LOG, ABC_ERR_LOG, XYZ_LOG 

Répondre

1

vos deux classes sont dans le même paquet?

Sinon, vous pouvez avoir à l'enregistreur:

log4j.logger.com.mysite.packageAbc=DEBUG, ABC_LOG, ABC_ERR_LOG 
log4j.logger.com.mysite.packageXyz=DEBUG, XYZ_LOG 

Sinon, vous pouvez configurer la connexion comme ce fichier dynamiquement:

public final void initParams(final String logFileName, 
     final Layout logLayout, final boolean origin, final Level level) { 
    FileAppender appender = 
     (FileAppender) logger.getParent().getAppender(DEFAULT_APPENDER_NAME); 

    if (appender != null && !logFileName.equalsIgnoreCase(appender.getFile())) { 
     appender.setFile(logFileName); 
     appender.setThreshold(level); 
     appender.setLayout(logLayout); 
     appender.activateOptions(); 
    } 
} 

La partie importante est le

appender.activateOptions(); 

si que log4j recharge sa configuration

+0

merci de répondre. – user1467855

0

Il s'avère que mon fichier de propriétés était correct. Quelque chose n'allait pas avec mon système de fichiers.