モジュール ngx_stream_log_module
設定例 ディレクティブ access_log log_format open_log_file_cache |
ngx_stream_log_module
モジュール (1.11.4) は、指定された形式でセッションログを書き込みます。
設定例
log_format basic '$remote_addr [$time_local] ' '$protocol $status $bytes_sent $bytes_received ' '$session_time'; access_log /spool/logs/nginx-access.log basic buffer=32k;
ディレクティブ
構文 |
access_log access_log |
---|---|
デフォルト |
access_log off; |
コンテキスト |
stream 、server |
バッファされたログ書き込みのパス、フォーマット、および設定を設定します。同じ設定レベルで複数のログを指定できます。「syslog:
」プレフィックスを最初の引数に指定することで、syslogへのログ記録を設定できます。特殊値off
は、現在のレベルのすべてのaccess_log
ディレクティブをキャンセルします。
buffer
またはgzip
パラメータのいずれかが使用されている場合、ログへの書き込みはバッファリングされます。
バッファサイズは、ディスクファイルへのアトミック書き込みのサイズを超えてはなりません。FreeBSDでは、このサイズは無制限です。
バッファリングが有効になっている場合、データはファイルに書き込まれます。
- 次のログ行がバッファに収まらない場合。
- バッファされたデータが
flush
パラメータで指定された時間よりも古い場合。 - ワーカープロセスがログファイルを開き直すか、シャットダウンする場合。
gzip
パラメータが使用されている場合、バッファされたデータはファイルに書き込む前に圧縮されます。圧縮レベルは1(最速、圧縮率低)から9(最遅、圧縮率高)の間で設定できます。デフォルトでは、バッファサイズは64KB、圧縮レベルは1に設定されています。データはアトミックブロックで圧縮されるため、ログファイルはいつでも「zcat
」で解凍または読み取ることができます。
例
access_log /path/to/log.gz basic gzip flush=5m;
gzip圧縮を機能させるには、nginxをzlibライブラリと共にビルドする必要があります。
ファイルパスには変数を指定できますが、そのようなログにはいくつかの制約があります。
- ワーカープロセスで使用される資格情報を持つユーザーは、そのようなログを含むディレクトリにファイルを作成する権限を持っている必要があります。
- バッファリングされた書き込みは機能しません。
- 各ログ書き込みごとにファイルが開かれ、閉じられます。ただし、頻繁に使用されるファイルの記述子はキャッシュに格納できるため、open_log_file_cacheディレクティブの
valid
パラメータで指定された時間、古いファイルへの書き込みを継続できます。
if
パラメータを使用すると、条件付きログ記録が可能になります。条件
が「0」または空文字列と評価される場合、セッションはログに記録されません。
構文 |
log_format |
---|---|
デフォルト | — |
コンテキスト |
stream |
ログフォーマットを指定します。例:
log_format proxy '$remote_addr [$time_local] ' '$protocol $status $bytes_sent $bytes_received ' '$session_time "$upstream_addr" ' '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';
escape
パラメータ (1.11.8) では、変数内の文字のエスケープとしてjson
またはdefault
を設定できます。デフォルトではdefault
エスケープが使用されます。none
パラメータ (1.13.10) はエスケープを無効にします。
default
エスケープでは、「"
」、「\
」、および値が32未満または126を超えるその他の文字は「\xXX
」としてエスケープされます。変数値が見つからない場合は、ハイフン(「-
」)がログに記録されます。
json
エスケープでは、JSON 文字列で許可されていないすべての文字がエスケープされます。「"
」と「\
」は「\"
」と「\\
」としてエスケープされ、値が32未満の文字は「\n
」、「\r
」、「\t
」、「\b
」、「\f
」、または「\u00XX
」としてエスケープされます。
構文 |
open_log_file_cache open_log_file_cache |
---|---|
デフォルト |
open_log_file_cache off; |
コンテキスト |
stream 、server |
変数を含む名前の頻繁に使用されるログのファイル記述子を格納するキャッシュを定義します。このディレクティブには、次のパラメータがあります。
max
- キャッシュ内の記述子の最大数を設定します。キャッシュがいっぱいになると、最後に使用された(LRU)記述子が閉じられます。
inactive
- この時間内にアクセスがない場合、キャッシュされた記述子が閉じられるまでの時間を設定します。デフォルトは10秒です。
min_uses
inactive
パラメータで定義された時間内にファイルが使用された回数の最小数を設定し、記述子をキャッシュに開いたままにします。デフォルトは1です。valid
- 同じ名前のファイルがまだ存在するかどうかを確認するまでの時間を設定します。デフォルトは60秒です。
off
- キャッシングを無効にします。
使用例
open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;