3

アプリに 4 つのログ ファイルが必要です。ログ ファイルのうち 3 つは、典型的な log4j 情報、警告、およびエラー ログです。4 番目のログ ファイルはまったく無関係で、一部のデータを記録するために使用されます。

私の log4j.properties ファイルは次のようになります。

log4j.threshold=ALL
log4j.rootLogger=ALL, InfoAppender, WarnAppender, ErrorAppender
log4j.DATA_LOGGER=INFO, DataAppender
log4j.additivity.DATA_LOGGER = false

log4j.appender.DataAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DataAppender.File=/app_logs/data.log

log4j.appender.InfoAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.InfoAppender.File=/app_logs/info.log

log4j.appender.WarnAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.WarnAppender.File=/app_logs/warn.log

log4j.appender.ErrorAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ErrorAppender.File=/app_logs/error.log

そして、私の Java コードは次のようになります。

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

private static final Log LOG = LogFactory.getLog(SomeClassInMyApp.class);
private static final Log DATA_LOG = LogFactory.getLog("DATA_LOGGER");

private static void foo() {
    LOG.info("Hello");
    DATA_LOG.info("Some data");
}

これを実行すると、「Hello」テキストが info.log ファイルに正しく書き込まれます。ただし、data.log ファイルが作成または書き込まれることはありません。

DATA_LOG.info("Some data") 行が data.log ファイルに書き込まれないのはなぜですか? また、それを行うにはどのようなコード変更を行う必要がありますか?

4

1 に答える 1

2

commons同様に動作するはずです。これを試してみてください

   import org.apache.log4j.Logger;
   ...
   ...
   Logger log = Logger.getLogger("DATA_LOGGER");
   ...
   ...
   log.info("my data");

これの代わりに

   import org.apache.commons.logging.Log;

更新このコードが機能することをテストしました:

log4j.properties

log4j.rootLogger = DEBUG, R

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=E:/testroot.log

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{DATE} %-5p %c:%L %x - %m%n


##########################################################################
################## Appender for Other Logger  ############################
##########################################################################
log4j.logger.TestLog=DEBUG, cache
log4j.additivity.TestLog=false

log4j.appender.cache=org.apache.log4j.DailyRollingFileAppender
log4j.appender.cache.File=E:/testcache.log
log4j.appender.cache.layout=org.apache.log4j.PatternLayout
log4j.appender.cache.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss} %c %m%n

Test Code

private static final Logger DATA_LOG = Logger.getLogger("TestLog");
private static final Logger LOG = Logger.getLogger(Test.class);

public static final void main(String[] args){
    LOG.error("MSG1");
    DATA_LOG.error("MSG2");
}

Output

testroot.log
09 Feb 2011 12:18:29,671 ERROR in.naishe.so.Test:11  - MSG1

testcache.log
09/02/2011 12:18:29 TestLog MSG2

何か不足していますか?

于 2011-02-09T05:26:21.693 に答える