ログがエスケープされる

mod_log_config - Apache HTTP Serverによれば、2.0.46からアクセスログとエラーログに出力される文字のうち、印字不可能文字が「\xHH」とエスケープされるようになったらしい。

日本語処理のデバッグ時に多バイト文字をエラーログに出力するとエスケープされちゃうのでちびっつ不便。

処理しているのはこんな箇所。

modules/loggers/mod_log_config.c
ap_escape_logitemで処理したものを返している。
server/util.c
ap_escape_logitemが定義されている。
ap_escape_logitem
TEST_CHAR(*s, T_ESCAPE_LOGITEM)でエスケープするかどうかの判断をしている。
TEST_CHAR
server/util.cで定義されていて、test_char_table[]を使っている。
test_char_table
server/test_char.hで定義されている。このファイルは生成される。

なので、ソースをいじらないとエスケープしないようにはできなさげ。

とりあえず、

tail -f error_log | while read -r l; do echo -e $l; done

でおちゃをにごす。

ただし、エスケープしているのはセキュリティ上の要請からなので、無闇にエスケープを戻すことの危険性を認識した上でご実行ください。