nginx日誌模塊及日誌格式

配置實例
指令
     access_log
     log_format
     open_log_file_cache

ngx_http_log_module模塊按指定的格式寫訪問日誌。html

請求在處理結束時,會按請求路徑的配置上下文記訪問日誌。 若是在請求處理期間產生了內部跳轉, 請求結束時的路徑可能不一樣於原始的請求路徑。nginx

配置實例

 

log_format gzip '$remote_addr - $remote_user [$time_local] '
                '"$request" $status $bytes_sent '
                '"$http_referer" "$http_user_agent" "$gzip_ratio"';

access_log /spool/logs/nginx-access.log gzip buffer=32k;

 

指令

語法: access_log path [format [buffer=size]];
access_log off;
默認值:
access_log logs/access.log combined;
上下文: httpserverlocationif in locationlimit_except

爲訪問日誌設置路徑,格式和緩衝區大小(nginx訪問日誌支持緩存)。 在同一個配置層級裏能夠指定多個日誌。 特定值off會取消當前配置層級裏的全部access_log指令。 若是沒有指定日誌格式則會使用預約義的「combined」格式。緩存

緩衝區的大小不能超過磁盤文件原子性寫入的大小。 對於FreeBSD來講緩衝區大小是無限制的。spa

日誌文件的路徑能夠包含變量(0.7.6+), 但此類日誌存在一些限制:日誌

  • 工做進程使用的user 應擁有在目錄裏建立文件的權限;
  • 寫緩衝無效;
  • 每條日誌寫入都會打開和關閉文件。然而,頻繁使用的文件描述符能夠存儲在緩存中, 在open_log_file_cache指令的valid參數指定的時間裏, 寫操做能持續寫到舊文件。
  • 每第二天志寫入的操做都會檢查請求的 根目錄是否存在, 若是不存在則日誌不會被建立。 所以在一個層級裏同時指定root 和access_log是一個不錯的想法:
    server {
        root       /spool/vhost/data/$host;
        access_log /spool/vhost/logs/$host;
        ...

 

語法: log_format name string ...;
默認值:
log_format combined "...";
上下文: http

指定日誌的格式。code

日誌格式容許包含普通變量和只在日誌寫入時存在的變量:orm

$body_bytes_sentserver

發送給客戶端的字節數,不包括響應頭的大小; 該變量與Apache模塊mod_log_config裏的「%B」參數兼容。htm

$bytes_sent進程

發送給客戶端的總字節數。

$connection

鏈接的序列號。

$connection_requests

當前經過一個鏈接得到的請求數量。

$msec

日誌寫入時間。單位爲秒,精度是毫秒。

$pipe

若是請求是經過HTTP流水線(pipelined)發送,pipe值爲「p」,不然爲「.」。

$request_length

請求的長度(包括請求行,請求頭和請求正文)。

$request_time

請求處理時間,單位爲秒,精度毫秒; 從讀入客戶端的第一個字節開始,直到把最後一個字符發送給客戶端後進行日誌寫入爲止。

$status

響應狀態。

$time_iso8601

ISO8601標準格式下的本地時間。

$time_local

通用日誌格式下的本地時間。

 

發送給客戶端的響應頭擁有「sent_http_」前綴。 好比$sent_http_content_range

配置始終包含預先定義的「combined」日誌格式:

log_format combined '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent"';

 

語法: open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
open_log_file_cache off;
默認值:
open_log_file_cache off;
上下文: httpserverlocation

定義一個緩存,用來存儲頻繁使用的文件名中包含變量的日誌文件描述符。 該指令包含如下參數:

max

設置緩存中描述符的最大數量;若是緩存被佔滿,最近最少使用(LRU)的描述符將被關閉。

inactive

設置緩存文件描述符在多長時間內沒有被訪問就關閉; 默認爲10秒。

min_uses

設置在inactive參數指定的時間裏, 最少訪問多少次才能使文件描述符保留在緩存中;默認爲1。

valid

設置一段用於檢查超時後文件是否仍以一樣名字存在的時間; 默認爲60秒。

off

禁用緩存。

 

使用實例:

open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;
相關文章
相關標籤/搜索