OpenResty Nginx 日志

2021-08-12 17:06 更新

Nginx 日志主要有兩種:access_log(訪問日志) 和 error_log(錯誤日志)。

access_log 訪問日志

access_log 主要記錄客戶端訪問 Nginx 的每一個請求,格式可以自定義。通過 access_log 你可以得到用戶地域來源、跳轉來源、使用終端、某個 URL 訪問量等相關信息。

log_format 指令用于定義日志的格式,語法: ?log_format name string;? 其中 name 表示格式名稱,string 表示定義的格式字符串。log_format 有一個默認的無需設置的組合日志格式。

默認的無需設置的組合日志格式
log_format combined '$remote_addr - $remote_user  [$time_local]  '
                    ' "$request"  $status  $body_bytes_sent  '
                    ' "$http_referer"  "$http_user_agent" ';

access_log 指令用來指定訪問日志文件的存放路徑(包含日志文件名)、格式和緩存大小,語法:?access_log path [format_name [buffer=size | off]];? 其中 path 表示訪問日志存放路徑,format_name 表示訪問日志格式名稱,buffer 表示緩存大小,off 表示關閉訪問日志。

log_format 使用示例:在 access.log 中記錄客戶端 IP 地址、請求狀態(tài)和請求時間
log_format myformat '$remote_addr  $status  $time_local';
access_log logs/access.log  myformat;

需要注意的是:log_format 配置必須放在 http 內(nèi),否則會出現(xiàn)警告。Nginx 進程設置的用戶和組必須對日志路徑有創(chuàng)建文件的權限,否則,會報錯。

定義日志使用的字段及其作用:

字段作用
$remote_addr與$http_x_forwarded_for記錄客戶端IP地址
$remote_user記錄客戶端用戶名稱
$request記錄請求的URI和HTTP協(xié)議
$status記錄請求狀態(tài)
$body_bytes_sent發(fā)送給客戶端的字節(jié)數(shù),不包括響應頭的大小
$bytes_sent發(fā)送給客戶端的總字節(jié)數(shù)
$connection連接的序列號
$connection_requests當前通過一個連接獲得的請求數(shù)量
$msec日志寫入時間。單位為秒,精度是毫秒
$pipe如果請求是通過HTTP流水線(pipelined)發(fā)送,pipe值為“p”,否則為“.”
$http_referer記錄從哪個頁面鏈接訪問過來的
$http_user_agent記錄客戶端瀏覽器相關信息
$request_length請求的長度(包括請求行,請求頭和請求正文)
$request_time請求處理時間,單位為秒,精度毫秒
$time_iso8601ISO8601標準格式下的本地時間
$time_local記錄訪問時間與時區(qū)

error_log 錯誤日志

error_log 主要記錄客戶端訪問 Nginx 出錯時的日志,格式不支持自定義。通過查看錯誤日志,你可以得到系統(tǒng)某個服務或 server 的性能瓶頸等。因此,將日志利用好,你可以得到很多有價值的信息。

error_log 指令用來指定錯誤日志,語法: ?error_log path [level];? 其中 path 表示錯誤日志存放路徑,level 表示錯誤日志等級,日志等級包括 debug、info、notice、warn、error、crit、alert、emerg,從左至右,日志詳細程度逐級遞減,即 debug 最詳細,emerg 最少,默認為 error。

注意:?error_log off? 并不能關閉錯誤日志記錄,此時日志信息會被寫入到文件名為 off 的文件當中。如果要關閉錯誤日志記錄,可以使用如下配置:

Linux 系統(tǒng)把存儲位置設置為空設備

error_log /dev/null;

http {
    # ...
}
Windows 系統(tǒng)把存儲位置設置為空設備

error_log nul;

http {
    # ...
}

另外 Linux 系統(tǒng)可以使用 tail 命令方便的查閱正在改變的文件,?tail -f filename? 會把 filename 里最尾部的內(nèi)容顯示在屏幕上, 并且不斷刷新, 使你看到最新的文件內(nèi)容。Windows 系統(tǒng)沒有這個命令,你可以在網(wǎng)上找到動態(tài)查看文件的工具。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號