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 path format [buffer=size] [gzip[=level]] [flush=time] [if=condition];
access_log off;
預設
access_log off;
上下文 stream, server

設定路徑、格式,以及緩衝日誌寫入的組態。可以在相同的組態層級指定多個日誌。可以透過在第一個參數中指定 “syslog:” 前綴來設定紀錄到 syslog。特殊值 off 會取消目前層級的所有 access_log 指令。

如果使用了 buffergzip 參數,則對日誌的寫入將會被緩衝處理。

緩衝區大小不得超過對磁碟檔案進行原子寫入的大小。對於 FreeBSD 來說,此大小不受限制。

啟用緩衝後,資料將會被寫入檔案

如果使用了 gzip 參數,則緩衝的資料將在寫入檔案之前進行壓縮。壓縮等級可以設定在 1 (最快,較少壓縮) 和 9 (最慢,最佳壓縮) 之間。預設情況下,緩衝區大小等於 64K 位元組,並且壓縮等級設定為 1。由於資料是以原子區塊壓縮,因此可以使用 “zcat” 隨時解壓縮或讀取日誌檔案。

範例

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

要使 gzip 壓縮生效,必須使用 zlib 函式庫來建置 nginx。

檔案路徑可以包含變數,但是此類日誌有一些限制

if 參數可以啟用條件式紀錄。如果 condition 的計算結果為 “0” 或空字串,則不會記錄連線。

語法 log_format name [escape=default|json|none] string ...;
預設
上下文 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) 允許在變數中設定 jsondefault 字元跳脫,預設情況下,使用 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=time] [min_uses=N] [valid=time];
open_log_file_cache off;
預設
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;