そしてlog4phpに嵌る

昨日はロガーの継承についておかしいことがわかって、いざ設定ファイルをこちょこちょいじってみたんだけど、やっぱりrootLoggerのappenderを継承しちょる。

にっちもさっちもいかないので、log4phpのソースを見てみる。LOG4PHP_LOGGER_PROPERTY_CONFIGURATOR_ADDITIVITY_PREFIX ってゆー定数が昨日の設定項目になるんだけど、別段おかしなことはしてなさそう。
うむむ、どうして?なんで?

うは、ひょっとしてひょっとすると...


; log4j.additivity.test=false
log4j.additivity.test="false"

とすると予期した動作に。
なんじゃこれー!ぼけー!
parse_ini_fileのマニュアルをよく読みましょう。。


注意: ini ファイル上でキーとして使ってはいけない単語があります。
それらは null, yes, no, true, false などが含まれます。
null, no および false は "" となり、yes および true は "1" となります。
次の文字 {}|&~![()" は、キーで使ってはいけません。
また、値の中で特別な意味を持ちます。

そもそもlog4phpの内部でこんなへんてこりんな仕様のparse_ini_fileなんて関数使うからあかんねん。propertyファイルぐらい自分でparseせいや、ホンマ。


$map = array();
foreach( $lines as $line)
{
if( strlen($line) == 0 || $line[0] == "#" ) contintue;
if( preg_match('/^\s*(.*?)\s*=\s*(.*?)\s*$/', $match, $line) )
{
$map[ $match[1] ] = $match[2];
}
}

1分。