在我們日常工作開發中,對調試bug最重要的手段就是查看日志和斷點調試了。
今天我們來說日志文件,Nginx的日志文件一般保存的是訪問日志和錯誤日志。
1. 用來log_format指令設置日志格式
log_format指令語法:log_format name format [format ...]
Nginx默認的combined格式如下:
log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
定義日志使用的字段及其作用:
$remote_addr 和$http_x_forward_for用於記錄IP地址
$remote_user 用於記錄遠程客戶端用戶名稱
$time_local 用於記錄訪問時間和時區
$request 用於記錄請求URL與HTTP協議
$status 用於記錄請求狀態
$body_bytes_sent 用於記錄發送給客戶端的文件主體內容大小,不包括響應頭的大小
$http_referer 用於記錄是從哪個頁面鏈接訪問過來的
$http_user_agent 用於記錄客戶端瀏覽器的相關內容
$bytes_sent 用於發送給客戶端的總字節數
$connection 用於連接的序列號
$connection_requests 用於當前通過一個連接獲得的請求數量
$msec 用於日志寫入時間。單位為秒,精度是毫秒
$pipe 用於如果請求是通過HTTP流水線(pipelined)發送,pipe值為“p”,否則為“.”
$request_length 用於請求的長度(包括請求行,請求頭和請求正文)
$request_time 用於請求處理時間,單位為秒,精度毫秒
$time_iso8601 用於ISO8601標准格式下的本地時間
$time_local 用於記錄訪問時間與時區
2. 用access_log指令指定訪問日志文件存放路徑
access_log指令語法:access_log path [format [buffer=size | off]]
format即第一點中log_format的name,如何設置了format,那么日志文件就會按設置的日志格式生成日志文件.
butter=size表示內存緩沖區的大小,例如可以設置buffer=32k
3. 用error_log指令指定錯誤日志文件存放路徑
error_log <FILE> <LEVEL>;
<FILE>:可以指定任意存放日志的目錄
<LEVEL>:錯誤日志級別,常見的錯誤日志級別有[debug | info | notice | warn | error | crit | alert | emerg],級別越高記錄的信息越少。
生產場景一般是 warn | error | crit 這三個級別之一
關閉error_log的方法:error_log /dev/null;