ログがエスケープされる
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
でおちゃをにごす。
ただし、エスケープしているのはセキュリティ上の要請からなので、無闇にエスケープを戻すことの危険性を認識した上でご実行ください。