Nginx日誌配置
阿新 • • 發佈:2021-01-11
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;