モジュール 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 パス フォーマット [buffer=サイズ] [gzip[=レベル]] [flush=時間] [if=条件];
access_log off;
デフォルト
access_log off;
コンテキスト streamserver

バッファされたログ書き込みのパス、フォーマット、および設定を設定します。同じ設定レベルで複数のログを指定できます。「syslog:」プレフィックスを最初の引数に指定することで、syslogへのログ記録を設定できます。特殊値offは、現在のレベルのすべてのaccess_logディレクティブをキャンセルします。

bufferまたはgzipパラメータのいずれかが使用されている場合、ログへの書き込みはバッファリングされます。

バッファサイズは、ディスクファイルへのアトミック書き込みのサイズを超えてはなりません。FreeBSDでは、このサイズは無制限です。

バッファリングが有効になっている場合、データはファイルに書き込まれます。

gzipパラメータが使用されている場合、バッファされたデータはファイルに書き込む前に圧縮されます。圧縮レベルは1(最速、圧縮率低)から9(最遅、圧縮率高)の間で設定できます。デフォルトでは、バッファサイズは64KB、圧縮レベルは1に設定されています。データはアトミックブロックで圧縮されるため、ログファイルはいつでも「zcat」で解凍または読み取ることができます。

access_log /path/to/log.gz basic gzip flush=5m;

gzip圧縮を機能させるには、nginxをzlibライブラリと共にビルドする必要があります。

ファイルパスには変数を指定できますが、そのようなログにはいくつかの制約があります。

ifパラメータを使用すると、条件付きログ記録が可能になります。条件が「0」または空文字列と評価される場合、セッションはログに記録されません。

構文 log_format 名前 [escape=default|json|none] 文字列 ...;
デフォルト
コンテキスト 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 max=N [inactive=時間] [min_uses=N] [valid=時間];
open_log_file_cache off;
デフォルト
open_log_file_cache off;
コンテキスト streamserver

変数を含む名前の頻繁に使用されるログのファイル記述子を格納するキャッシュを定義します。このディレクティブには、次のパラメータがあります。

max
キャッシュ内の記述子の最大数を設定します。キャッシュがいっぱいになると、最後に使用された(LRU)記述子が閉じられます。
inactive
この時間内にアクセスがない場合、キャッシュされた記述子が閉じられるまでの時間を設定します。デフォルトは10秒です。
min_uses
inactiveパラメータで定義された時間内にファイルが使用された回数の最小数を設定し、記述子をキャッシュに開いたままにします。デフォルトは1です。
valid
同じ名前のファイルがまだ存在するかどうかを確認するまでの時間を設定します。デフォルトは60秒です。
off
キャッシングを無効にします。

使用例

open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;