いちSEのつぶやき

エンジニアとして、気になることを残していきます。

log4jの出力先動的変更

JUnit単体テストをやるときに、ログを成果物にすることが多い。
そんなとき、JUnitクラスを実行するたびにログファイルの
出力先を動的に変更できたらうれしい。
ということで調べてみた。

log4j.properties

                                • -

log4j.rootLogger=DEBUG,Root
log4j.appender.Root=org.apche.log4j.FileAppender
・・・

テストクラスのsetUpで下記のように記述

Logger log = Logger.getLogger("rootLogger");
FileAppender appendar= (FileAppendar)log.getParent().getAppendar("Root");
String[] split = this.getClass().getName().split("[.]");
appendar.setFile(split[split.length-1] + "_trace.log");
appendar.activeOptions();//変更の反映

rootLoggerを使わない場合は、2行目の記述が少し変わるっぽい。