nginx日志格式配置


/etc/nginx/nginx.conf

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

 

 

 

nginx日志格式字段
Nginx日志主要分為兩種:訪問日志和錯誤日志。日志開關在Nginx配置文件(/etc/nginx/nginx.conf)中設置,兩種日志都可以選擇性關閉,默認都是打開的。

訪問日志
訪問日志主要記錄客戶端訪問Nginx的每一個請求,格式可以自定義。通過訪問日志,你可以得到用戶地域來源、跳轉來源、使用終端、某個URL訪問量等相關信息。Nginx中訪問日志相關指令主要有兩條:
(1).log_format
log_format用來設置日志格式,也就是日志文件中每條日志的格式,具體如下:
log_format name(格式名稱) type(格式樣式)
舉例說明如下:
log_format main '$server_name $remote_addr - $remote_user [$time_local] "$request" '
'$status $uptream_status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" '
'$ssl_protocol $ssl_cipher $upstream_addr $request_time $upstream_response_time';


每個樣式的含義如下:
$server_name:虛擬主機名稱。
$remote_addr:遠程客戶端的IP地址。
-:空白,用一個“-”占位符替代,歷史原因導致還存在。
$remote_user:遠程客戶端用戶名稱,用於記錄瀏覽者進行身份驗證時提供的名字,如登錄百度的用戶名scq2099yt,如果沒有登錄就是空白。
[$time_local]:訪問的時間與時區,比如18/Jul/2012:17:00:01 +0800,時間信息最后的"+0800"表示服務器所處時區位於UTC之后的8小時。
$request:請求的URI和HTTP協議,這是整個PV日志記錄中最有用的信息,記錄服務器收到一個什么樣的請求
$status:記錄請求返回的http狀態碼,比如成功是200。
$uptream_status:upstream狀態,比如成功是200.

$upstream_addr:后端服務器的IP地址

 

$upstream_status:后端服務器返回的HTTP狀態碼

在server{}中添加
add_header backendIP $upstream_addr;
add_header backendCode $upstream_status;

$body_bytes_sent:發送給客戶端的文件主體內容的大小,比如899,可以將日志每條記錄中的這個值累加起來以粗略估計服務器吞吐量。
$http_referer:記錄從哪個頁面鏈接訪問過來的。
$http_user_agent:客戶端瀏覽器信息
$http_x_forwarded_for:客戶端的真實ip,通常web服務器放在反向代理的后面,這樣就不能獲取到客戶的IP地址了,通過$remote_add拿到的IP地址是反向代理服務器的iP地址。反向代理服務器在轉發請求的http頭信息中,可以增加x_forwarded_for信息,用以記錄原有客戶端的IP地址和原來客戶端的請求的服務器地址。
$ssl_protocol:SSL協議版本,比如TLSv1。
$ssl_cipher:交換數據中的算法,比如RC4-SHA。
$upstream_addr:upstream的地址,即真正提供服務的主機地址。
$request_time:整個請求的總時間。
$upstream_response_time:請求過程中,upstream的響應時間。
訪問日志中一個典型的記錄如下:
192.168.1.102 - scq2099yt [18/Mar/2013:23:30:42 +0800] "GET /stats/awstats.pl?config=scq2099yt HTTP/1.1" 200 899 "http://192.168.1.1/pv/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows XXX; Maxthon)"
需要注意的是:log_format配置必須放在http內,否則會出現如下警告信息:
nginx: [warn] the "log_format" directive may be used only on "http" level in /etc/nginx/nginx.conf:97
(2)access_log
access_log指令用來指定日志文件的存放路徑(包含日志文件名)、格式和緩存大小,具體如下:
access_log path(存放路徑) [format(自定義日志格式名稱) [buffer=size | off]]
舉例說明如下:
access_log logs/access.log main;
如果想關閉日志,可以如下:
access_log off;
能夠使用access_log指令的字段包括:http、server、location。
需要注意的是:Nginx進程設置的用戶和組必須對日志路徑有創建文件的權限,否則,會報錯。
Nginx支持為每個location指定強大的日志記錄。同樣的連接可以在同一時間輸出到不止一個的日志中。

錯誤日志
錯誤日志主要記錄客戶端訪問Nginx出錯時的日志,格式不支持自定義。通過錯誤日志,你可以得到系統某個服務或server的性能瓶頸等。因此,將日志好好利用,你可以得到很多有價值的信息。錯誤日志由指令error_log來指定,具體格式如下:
error_log path(存放路徑) level(日志等級)
path含義同access_log,level表示日志等級,具體如下:
[ debug | info | notice | warn | error | crit ]
從左至右,日志詳細程度逐級遞減,即debug最詳細,crit最少。
舉例說明如下:
error_log logs/error.log info;
需要注意的是:error_log off並不能關閉錯誤日志,而是會將錯誤日志記錄到一個文件名為off的文件中。
正確的關閉錯誤日志記錄功能的方法如下:
error_log /dev/null;
上面表示將存儲日志的路徑設置為“垃圾桶”。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM