log4php
まぁlog4phpだけに限った話ではないんだけど、log4xx の設定ファイルで指定したロガーは階層構造になっている。んで、rootLoggerに指定したappender は、デフォルトでは全てのロガーでも使いまわされる、のである。
つまり、rootLogger で標準出力にロギングするようにしていた場合、自分で定義したロガーも、標準出力にロギングしてしまうのである(したくもないし、そんな設定をした覚えもないのに)。
色々探してる、まさにこれ↓と同じ現象でした。
log4j でログが複数吐かれる
解決策
ロガーは rootLogger を頂点とする階層構造になっています。
ロガーの定義において、上位のアペンダーは継承されます。
あるロガーでアペンダーを指定すると、それは set ではなく add と考える事ができます。もし logger.test でアペンダーを継承しない場合は、
log4j.additivity.test=false
とする様です。
仕様が私の感覚にはそぐわないが、解決策はわかったのでひとまずよしとしよう。