Javaプロジェクトのログ記録にLog4Jを使用したいと思います。srcディレクトリに次の内容のlog4j.propertiesファイルを作成しました。
# Root logger option
log4j.rootLogger=INFO, file, stdout
log4j.logger.DEFAULT_LOGGER=INFO,file2
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=file.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.appender.file2=org.apache.log4j.FileAppender
log4j.appender.file2.File=file2.log
log4j.appender.file2.layout=org.apache.log4j.PatternLayout
log4j.appender.file2.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
たとえば、メインメソッドでのみ「DEFAULT_LOGGER」を使用したいとします。だから私は書いた:
static Logger log = Logger.getLogger("DEFAULT_LOGGER");
log.fatal("Process Logger");
しかし、mainメソッドを実行すると、「Process Logger」というメッセージがすべてのアペンダー(stdout、file、file2)に出力されますが、file2にのみ出力したいと思います。どうすればそれを行うことができますか、または私が間違っていることを言う方が良いですか?
2つ目のポイントは、mainメソッドを2回実行すると、fileとfile2が上書きされず、テキストファイル内に行が追加されるだけです。どうすればそれを回避できますか?