アプリに 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 ファイルに書き込まれないのはなぜですか? また、それを行うにはどのようなコード変更を行う必要がありますか?