Contents
ログ出力形式の変更方法
nginxの設定ファイル(/etc/nginx/nginx.conf)にlog_formatを定義して、access_logにその定義を設定する。
具体的には次のように書く。
http {
// ...省略...
// ログ出力形式の定義
log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
// 定義combinedを使う
access_log /var/log/nginx/access.log combined;
// ...省略...
}
設定を反映するためにnginxを再起動する。
sudo service nginx restart
ログにリクエスト処理時間を出力
ログファイルにリクエスト処理時間を出力するにはlog_formatディレクティブに$request_timeを設定する。
次のように設定すれば行の最後にミリ秒でリクエスト処理時間が出力される。
http {
// ...省略...
log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent $request_time"';
access_log /var/log/nginx/access.log combined;
// ...省略...
}
再起動を忘れずに。
ログに出力できる内容
log_formatディレクティブにログの書式を定義する変数として以下のものが使える。
- $bytes_sent
- クライアントに送信されるバイト数
- $connection
- 接続のシリアルナンバー
- $connection_requests
- 一つの接続を中に作成されるリクエスト数
- $msec
- ミリ秒の精度のログの書き込み時間の秒数
- $pipe
- リクエストがパイプラインされている場合は”p”、そうでなければ”.”を出力
- $request_length
- リクエストの長さ(リクエスト行、ヘッダとリクエストボディを含む)
- $request_time
- ミリ秒単位の精度のリクエストの処理時間; クライアントからの最初のバイトを読み込んでから最後のバイトがクライアントに送られてログが書き込まれるまでの経過時間
- $status
- HTTPステータスコード
- $time_iso8601
- ISO 8601 標準フォーマットのローカルタイム
- $time_local
- Common Log フォーマットのローカルタイム