combinedに代わるオレ流ログフォーマット
こんにちは、combinedログ撲滅委員会のひろせです。
ApacheのcombinedやNginxのデフォルトのlog_formatは、機械処理(日付でのソートやパース)がしづらい上に、人の目にもあまり見やすいフォーマットとはいえないと思っています。
なので自宅のサーバーでは、
- 日付は ISO8601 にする
- sortコマンドとかで簡単にそぉーっとソートできるようになる
- 日付、レスポンスコード、所要時間とか固定長的なフィールドは左に寄せる
- URLとかUAとか可変長で長いのは右に寄せる
- リクエスト(%r)も右に寄せた方ががいいような気がしてきた。。。
- 数値だけだとわかりづらいのでなんとなくわかるようにフィールド名も添える
- フィールド名を長くするとわかりやすくなる反面、ログサイズが大きくなるので注意
という観点で次のようなログフォーマットにしています、
# Apache LogFormat "%{%Y-%m-%d %H:%M:%S}t %h %u \"%r\" %>s pid=%P c=%X k=%k b=%b t=%D \"%{Referer}i\" \"%{User-Agent}i\"" oreno
# Nginx log_format oreno '$time_iso8601 $remote_addr $remote_user ' '"$request" $status ' '$request_length $body_bytes_sent $request_time ' '- $http_host ' '"$http_referer" "$http_user_agent"';
# BEFORE 192.168.0.1 - - [14/Dec/2012:16:35:24 +0900] "GET /ouffu/hidek.png HTTP/1.1" 200 5105 "http://d.hatena.ne.jp/yappo/20110517/1305612204" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/536.26.17 (KHTML, like Gecko) Version/6.0.2 Safari/536.26.17" ↓ # AFTER 2012-12-14 09:38:31 192.168.0.1 - "GET /ouffu/hidek.png HTTP/1.1" 200 pid=10183 c=+ k=0 b=5105 t=23288 "http://d.hatena.ne.jp/yappo/20110517/1305612204" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/536.26.17 (KHTML, like Gecko) Version/6.0.2 Safari/536.26.17"
というお話でした。