モジュール ngx_http_log_module
設定例 ディレクティブ access_log log_format open_log_file_cache |
ngx_http_log_module
モジュールは、指定された形式でリクエストログを書き込みます。
リクエストは、処理が終了したロケーションのコンテキストでログに記録されます。リクエスト処理中に内部リダイレクトが発生した場合、元のロケーションとは異なる場合があります。
設定例
log_format compression '$remote_addr - $remote_user [$time_local] ' '"$request" $status $bytes_sent ' '"$http_referer" "$http_user_agent" "$gzip_ratio"'; access_log /spool/logs/nginx-access.log compression buffer=32k;
ディレクティブ
構文 |
access_log access_log |
---|---|
デフォルト |
access_log logs/access.log combined; |
コンテキスト |
http 、server 、location 、if in location 、limit_except |
バッファされたログ書き込みのパス、フォーマット、および設定を設定します。同じ設定レベルで複数のログを指定できます。syslogへのログ記録は、最初の引数に「syslog:
」プレフィックスを指定することで設定できます。特殊値off
は、現在のレベルにあるすべてのaccess_log
ディレクティブをキャンセルします。フォーマットが指定されていない場合、事前に定義された「combined
」フォーマットが使用されます。
buffer
またはgzip
(1.3.10、1.2.7)パラメーターのいずれかが使用されている場合、ログへの書き込みはバッファリングされます。
バッファーサイズは、ディスクファイルへのアトミック書き込みのサイズを超えてはなりません。FreeBSDでは、このサイズは無制限です。
バッファリングが有効になっている場合、データはファイルに書き込まれます。
- 次のログ行がバッファーに収まらない場合。
- バッファリングされたデータが
flush
パラメーター(1.3.10、1.2.7)で指定された時間よりも古い場合。 - ワーカープロセスがログファイルを開き直しているか、シャットダウンしている場合。
gzip
パラメーターが使用されている場合、バッファリングされたデータはファイルに書き込む前に圧縮されます。圧縮レベルは1(最速、圧縮率が低い)から9(最遅、圧縮率が高い)の間で設定できます。デフォルトでは、バッファーサイズは64KB、圧縮レベルは1に設定されています。データはアトミックブロックで圧縮されるため、ログファイルはいつでも「zcat
」で解凍または読み取ることができます。
例
access_log /path/to/log.gz combined gzip flush=5m;
gzip圧縮を動作させるには、nginxをzlibライブラリでビルドする必要があります。
ファイルパスには変数を含めることができます(0.7.6以降)。ただし、そのようなログにはいくつかの制約があります。
- ワーカープロセスで使用される資格情報を持つユーザーには、そのようなログを含むディレクトリにファイルを作成する権限が必要です。
- バッファリングされた書き込みは機能しません。
- 各ログ書き込みごとにファイルが開かれ、閉じられます。ただし、頻繁に使用されるファイルのディスクリプタはキャッシュに格納できるため、open_log_file_cacheディレクティブの
valid
パラメーターで指定された時間中は、古いファイルへの書き込みを継続できます。 - 各ログ書き込み時に、リクエストのルートディレクトリの存在がチェックされ、存在しない場合はログが作成されません。そのため、同じ設定レベルでrootと
access_log
の両方を指定することをお勧めします。server { root /spool/vhost/data/$host; access_log /spool/vhost/logs/$host; ...
if
パラメーター(1.7.0)により、条件付きログ記録が有効になります。条件
が「0」または空文字列に評価された場合、リクエストはログに記録されません。次の例では、応答コードが2xxと3xxのリクエストはログに記録されません。
map $status $loggable { ~^[23] 0; default 1; } access_log /path/to/access.log combined if=$loggable;
構文 |
log_format |
---|---|
デフォルト |
log_format combined "..."; |
コンテキスト |
http |
ログフォーマットを指定します。
escape
パラメーター(1.11.8)を使用すると、変数内の文字のエスケープとしてjson
またはdefault
を設定できます。デフォルトではdefault
エスケープが使用されます。none
値(1.13.10)はエスケープを無効にします。
default
エスケープの場合、「"
」、「\
」、および値が32未満(0.7.0)または126を超える(1.1.6)文字は「\xXX
」としてエスケープされます。変数の値が見つからない場合、ハイフン(「-
」)がログに記録されます。
json
エスケープの場合、JSON文字列で許可されていないすべての文字がエスケープされます。「"
」と「\
」は「\"
」と「\\
」としてエスケープされ、値が32未満の文字は「\n
」、「\r
」、「\t
」、「\b
」、「\f
」、または「\u00XX
」としてエスケープされます。
ログフォーマットには、一般的な変数と、ログ書き込み時にのみ存在する変数を含めることができます。
$bytes_sent
- クライアントに送信されたバイト数
$connection
- 接続シリアル番号
$connection_requests
- 接続を通じて行われたリクエストの現在の数(1.1.18)
$msec
- ログ書き込み時のミリ秒単位の精度での秒数
$pipe
- リクエストがパイプライン処理された場合は「
p
」、それ以外の場合は「.
」 $request_length
- リクエストの長さ(リクエスト行、ヘッダー、リクエストボディを含む)
$request_time
- ミリ秒単位の精度での秒数でのリクエスト処理時間。クライアントから最初のバイトが読み取られてから、最後のバイトがクライアントに送信された後のログ書き込みまでの経過時間
$status
- レスポンスステータス
$time_iso8601
- ISO 8601標準形式のローカル時間
$time_local
- 共通ログ形式のローカル時間
最新のnginxバージョンでは、変数$status(1.3.2、1.2.2)、$bytes_sent(1.3.8、1.2.5)、$connection(1.3.8、1.2.5)、$connection_requests(1.3.8、1.2.5)、$msec(1.3.9、1.2.6)、$request_time(1.3.9、1.2.6)、$pipe(1.3.12、1.2.7)、$request_length(1.3.12、1.2.7)、$time_iso8601(1.3.12、1.2.7)、および$time_local(1.3.12、1.2.7)も一般的な変数として使用できます。
クライアントに送信されるヘッダー行には、「sent_http_
」プレフィックスが付きます(例:$sent_http_content_range
)。
設定には、常に事前に定義された「combined
」フォーマットが含まれています。
log_format combined '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"';
構文 |
open_log_file_cache open_log_file_cache |
---|---|
デフォルト |
open_log_file_cache off; |
コンテキスト |
http 、server 、location |
変数を含む名前の頻繁に使用されるログのファイルディスクリプタを格納するキャッシュを定義します。このディレクティブには次のパラメーターがあります。
max
- キャッシュ内のディスクリプタの最大数を設定します。キャッシュがいっぱいになると、最近使用されていない(LRU)ディスクリプタが閉じられます。
inactive
- この時間内にアクセスがない場合、キャッシュされたディスクリプタが閉じられるまでの時間を設定します。デフォルトは10秒です。
min_uses
inactive
パラメーターで定義された時間内にファイルが使用された最小回数を設定します。これにより、ディスクリプタはキャッシュ内で開いたままになります。デフォルトは1です。valid
- 同じ名前のファイルがまだ存在するかどうかを確認するまでの時間を設定します。デフォルトは60秒です。
off
- キャッシングを無効にします。
使用例
open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;