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 (最慢,最佳壓縮) 之間。預設情況下,緩衝區大小等於 64K 位元組,並且壓縮等級設定為 1。由於資料是以原子區塊壓縮,因此可以使用 “zcat
” 隨時解壓縮或讀取日誌檔案。
範例
access_log /path/to/log.gz basic gzip flush=5m;
要使 gzip 壓縮生效,必須使用 zlib 函式庫來建置 nginx。
檔案路徑可以包含變數,但是此類日誌有一些限制
- 使用工作程序憑證的 使用者應具有在具有此類日誌的目錄中建立檔案的權限;
- 緩衝寫入不起作用;
- 檔案會在每次寫入日誌時開啟和關閉。但是,由於常用檔案的描述符可以儲存在快取中,因此在 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) 會停用跳脫。
對於 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;