文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

nginxのログフォーマット

少しづつnginxを知っていきましょう〜


f:id:treeapps:20180424102046p:plain

久々にnginxの話題です。

恐らくデフォルトのlog_formatは以下のようになっています。

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /etc/nginx/logs/access.log;

この中の「main」とは何でしょう。

これは、シングルクォートで囲った書式に「main」という名前をつけています。ここでは名前をつけているだけなので、ここだけ設定してもログフォーマットは変わりません。

このmainを使うには、以下のように書式名を指定することで、有効になります。

    access_log  /etc/nginx/logs/access.log main;

続いて、ホスト名をaccess_logに出力するよう修正してみましょう。

    log_format  main  '$host$remote_addr - $remote_user [$time_local] "$http_host" "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /etc/nginx/logs/access.log main;

このように$http_hostを追加し、nginxを再起動することで、ホスト名も出力されるようになり、こんな感じで出力されます。

66.249.69.121 - - [11/Jan/2012:00:55:40 +0900] "tree-shop.info" "GET /rakuten/product/detail/1fed45d5da7e1e517b195f4357576431/ HTTP/1.1" 200 3236 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"

「tree-shop.info」の部分が$http_hostに当たります。