0

2 つのクラスと 2 つの log4j.properties ファイル (クラスごとに 1 つのファイル) があります。すべてが正常に機能しています。次に、2 つのプロパティ ファイルを 1 つにマージします。ただし、各クラスには独自のログ ファイルが必要です。それ、どうやったら出来るの?私は次のことを行いましたが、機能していません: クラス Abc.java は正常にログを記録しますが、Xyz.java はそれ自体のファイルにログを記録しなくなりました。Xyz.java は動的ログ ファイル名を取得することに注意してください。

 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
4

2 に答える 2

1

あなたの2つのクラスは同じパッケージにありますか?

そうでない場合は、ロガーする必要があります:

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

それ以外の場合は、次のように動的にログファイルを設定できます。

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();
    }
}

重要な部分は

 appender.activateOptions();

log4jがその設定をリロードするように

于 2012-09-06T08:10:05.390 に答える
0

私のプロパティファイルが正しいことがわかりました。ファイルシステムに問題がありました。

于 2012-09-07T19:30:43.900 に答える