nginx: ログ出力形式の変更と、ログにレスポンスタイムを出力する方法

Pocket

ログ出力形式の変更方法

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 フォーマットのローカルタイム

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です