1. 程式人生 > 實用技巧 >Nginx日誌配置

Nginx日誌配置

Nginx有非常靈活的日誌記錄模式,每個級別的配置可以有各自獨立的訪問日誌。日誌格式 通過log_format 命令定義格式

日誌相關指令有兩天:一條是log_format,用來設定日誌格式,另外一條是access_log,用來指定日誌檔案的存放路徑、格式和快取大小,可以參考http://nginx.org/en/docs/http/ngx_http_log_module.html

1、log_format 指令

一般在nginx的配置檔案中日誌配置 /etc/nginx/nginx.conf

配置語法:

Syntax:log_formatname[escape=default|json|none]string

...;

Default:log_format combined "...";

Context:http

#Nginx預設定義日誌語法

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

#Nginx日誌格式允許包含的變數

$remote_addr, $http_x_forwarded_for(反向) 記錄客戶端IP地址
$remote_user   記錄客戶端使用者名稱稱
$request   記錄請求的URL和HTTP協議
$status   記錄請求狀態
$body_bytes_sent   傳送給客戶端的位元組數,不包括響應頭的大小; 該變數與Apache模組mod_log_config裡的“%B”引數相容。
$bytes_sent   傳送給客戶端的總位元組數。
$connection   連線的序列號。
$connection_requests   當前通過一個連接獲得的請求數量。
$msec   日誌寫入時間。單位為秒,精度是毫秒。
$pipe   如果請求是通過HTTP流水線(pipelined)傳送,pipe值為“p”,否則為“.”。
$http_referer   記錄從哪個頁面連結訪問過來的
$http_user_agent   記錄客戶端瀏覽器相關資訊
$request_length   請求的長度(包括請求行,請求頭和請求正文)。
$request_time   請求處理時間,單位為秒,精度毫秒; 從讀入客戶端的第一個位元組開始,直到把最後一個字元傳送給客戶端後進行日誌寫入為止。
$time_iso8601   ISO8601標準格式下的本地時間。
$time_local     通用日誌格式下的本地時間。
簡單的配置案例:
http {
  log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    '"$status" $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for" '
    '"$gzip_ratio" $request_time $bytes_sent $request_length';

  log_format  porxy  '$http_x_forwarded_for - $remote_user  [$time_local]  '
    ' "$request"  $status $body_bytes_sent '
    ' "$http_referer"  "$http_user_agent" ';

  log_format srcache_log '$remote_addr - $remote_user [$time_local] "$request" '
    '"$status" $body_bytes_sent $request_time $bytes_sent $request_length '
    '[$upstream_response_time] [$srcache_fetch_status] [$srcache_store_status] [$srcache_expire]';

2、access_log指令

  指定日誌只存放路徑

log_format 定義日誌的格式,access_log應用格式

access_log logs/access.log main;