log4j の appender がないと言われる警告を出さなくする
備忘録。
log4jを使用していて、以下のような警告が出ることがある。
log4j:WARN No appenders could be found for logger (xxx.xxx.xxx.Xxx). log4j:WARN Please initialize the log4j system properly.
これはログ出力処理を行うクラスに対して、log4jの設定上、該当するAppenderの設定がされていない場合に出る。
よくあるのは、ライブラリを使用していてライブラリ内の処理でログ出力をしているのに、log4jの設定に該当するAppenderの設定がないパターン。
多数のライブラリを使用していると、いちいちパッケージを指定するのも面倒なので、ルートロガーを指定してやればよい。
log4j.properties の例
# logger log4j.rootLogger=DEBUG, console log4j.logger.xxx=DEBUG, console # console appender log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%d [%-5p-%c] %m%n
ただ、開発時には上記でよくても、運用時にはライブラリ内のログ出力は不要なこともあると思う。
そんな時に便利なのが、NullAppender。名前から想像できる通り、このAppenderは何も出力しない。
# logger log4j.rootLogger=FATAL, null log4j.logger.xxx=WARN, file # null appender log4j.appender.null=org.apache.log4j.varia.NullAppender # file appender log4j.appender.file=org.apache.log4j.DailyRollingFileAppender log4j.appender.file.File=/var/log/webapp/xxx_log log4j.appender.file.DatePattern='.'yyyyMMdd log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d [%-5p-%c] %m%n log4j.appender.file.encoding=UTF-8