ngx_stream_log_module モジュール
設定例 ディレクティブ ディレクティブ 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
パラメータ で指定されたものより古い場合; - workerプロセスがログファイルをre-openingまたはシャットダウンする場合
もしgzip
パラメータが使われると、バッファされたデータはファイルに書き込む前に圧縮されるでしょう。圧縮レベルは1 (高速、低圧縮)から9(低速、高圧縮)の間で設定することができます。デフォルトでは、バッファサイズは64Kバイトで、圧縮レベルは1に設定されます。データは最小限のブロックで圧縮されるため、ログファイルはいつでも解凍または"zcat
"で読むことができます。
例:
access_log /path/to/log.gz basic gzip flush=5m;
gzip圧縮を動作させるには、nginxがzlibライブラリとビルドされていなければなりません。
ファイルパスには変数を含むことができますが、そのようなログには幾つかの制限があります:
- workerプロセスによって認証が使われたuserは、そのようなログがあるディレクトリにファイルを作る権限を持つ必要があります;
- バッファ書き込みが動作しません;
-
ファイルはそれぞれのログの書き込みごとに開かれ閉じられます。しかし、よく使われるファイルのディスクリプタは cacheに保持することができるため、open_log_file_cacheディレクティブの
valid
パラメータで指定される時間の間古いファイルへの書き込みを続けることができます。
if
パラメータは条件付きのログを有効にします。condition
が"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) はエスケープを無効にします。
デフォルト
のエスケープでは、文字“"
”、“\
”、値が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)ディスクリプタが閉じられます。 closed
inactive
- 指定の期間アクセスされていないキャッシュのディスクリプタが閉じられる時間を定義します; デフォルトは 10秒です。
min_uses
-
inactive
パラメータで定義された期間キャッシュの中でディスクリプタが開かれたままになるファイルの最小数を設定します; デフォルトは1です valid
- ファイルがまだ同じ名前で存在しているかをチェックすべき時間を設定します; デフォルトは 60秒です。
off
- キャッシュを無効にします
利用例:
open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;