「Nginx」03節-Nginx日誌

概述

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

「Nginx」03節-Nginx日誌

Nginx access_log 訪問日誌

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

log_format 指令用於定義日誌的格式,語法為:

log_format name string;

其中,name表示格式名稱,string表示定義的格式字符串,log_format有一個默認的無需設置的日誌格式,缺省的日誌格式為:

log_format combine '$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 myformat '$remote_addr $status $time_local'; 

access_log logs/access.log myformat;

注意事項:

  • log_format 配置必須放在http配置節內,否則會警告;
  • Nginx進程設置的用戶和組,必須對日誌路徑有創建文件的權限,否則會報錯;

常用日誌字段介紹

  1. $remote_addr 、$http_x_forwarded_for :記錄客戶端IP地址
  2. $remote_user:記錄客戶端用戶名稱
  3. $request:記錄請求的URL和HTTP協議
  4. $status:記錄請求的狀態
  5. $body_bytes_sent:發送給客戶端的字節數,不包括響應頭的大小
  6. $bytes_sent:發送給客戶端的總字節數
  7. $connection:連接的序列號
  8. $connection_requests:當前通過一個連接獲得的請求數量
  9. $msec:日誌寫入時間,單位為秒,精度為毫秒
  10. $http_referer:記錄從哪個頁面鏈接訪問過來的
  11. $http_user_agent:記錄客戶端瀏覽器相關信息
  12. $request_length:請求的長度(含請求行、請求頭、請求正文)
  13. $request_time:請求處理時間,單位為秒,精度為毫秒
  14. $time_local:記錄訪問的時間及時區信息

Nginx error_log 錯誤日誌

error_log 主要記錄客戶端訪問Nginx的出錯信息,格式無法自定義。通過查看錯誤日誌,我們可以看出某個服務或服務器的性能瓶頸等。

error_log 指令用來指定錯誤日誌,語法為:

error_log path [level];

其中,path表示錯誤日誌存放路徑,level表示錯誤日誌等級(debug、info、notice、warn、error、crit、alert、emerg)。從左到右,日誌詳細度逐級遞減(debug最詳細,emerg最簡單),默認級別為error。

error_log 放在全局配置中,如:

「Nginx」03節-Nginx日誌

如何關閉錯誤日誌?

  • Linux下關閉Nginx error_log
error_log /dev/null;
  • Windows下關閉Nginx error_log
error_log nul;


分享到:


相關文章: