nginx的access_log與error_log


       參考文章:https://juejin.im/post/5aa09bb3f265da238f121b6c

      本篇文章主要介紹一下 nginx 服務器兩種日志查看:access_log、error_log

      access_log:指的是訪問日志,我們通過訪問日志可以獲取用戶的 IP、請求處理的時間、瀏覽器信息等

      error_log:錯誤日志記錄了訪問出錯的信息,可以用於定位錯誤的原因

      設置 access_log

      訪問日志主要用於記錄客戶端的請求。客戶端向 nginx 服務器發起的每一次請求都會被記錄到 access_log 中。

      包含請求 IP、時間、訪問 url等等,當然訪問日志中具體記錄哪些日志信息我們可以通過 log_format 設置

      查看日志存放地址

      find / -name nginx.conf

      

      根據查詢出來地址,進入 nginx.conf 文件查找 access_log 和 error_log 文件的路徑

      

      

      設置 access_log 語法:

access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]]; # 設置訪問日志
access_log off; # 關閉訪問日志
path 表示指定日志存放位置
format 表示日志格式即日志中記錄的內容
buffer 用於指定日志寫入時的緩存大小,默認 64k
gzip 日志寫入前先壓縮。壓縮率可以指定,從1到9數值越大壓縮比越高,同時壓縮的速度也越慢,默認1
flush 設置緩存的時間,如果超過flush指定的時間,緩存中的內容將被清空
if 判斷條件,如果指定的條件計算為0或空字符串,那么該請求不會被寫入日志

   設置 buffer 的目的,是為了避免高頻對磁盤進行讀寫操作,即暫時先不將日志寫入磁盤,而是存入內存中,等達到了設置緩存大小之后再一次性

     寫入,注意 flush 指令是和 buffer 一起使用的,即指定 buffer=size 之后,如果超過 flush 指令設定的時間仍然未達到緩存區大小,則也會被寫入到

    磁盤,沒有 buffer 而只有 flush 則會報錯

      基本用法

access_log /var/logs/nginx-access.log

  上面的例子指定日志的寫入路徑為 /var/logs/nginx-access.log 日志格式默認使用 combined

access_log /var/logs/nginx-access.log buffer=32k gzip flush=1m

  該例子指定日志寫入路徑為 /var/logs/nginx-access.log 日志格式默認使用 combined ,日志的緩存大小為 32k,日志寫入前啟用

       gzip 壓縮,壓縮比值 1,緩存數據的有效時間為 1 分鍾

    查看 access 訪問日志(日志摘抄來自網上,主要用於說明問題)

      訪問日志分析

      摘出來一段部分分析:

100.109.195.91 - - [17/Feb/2017:00:08:11 +0800] "GET /data/upload/shop/common/loading.gif HTTP/1.0" 200 134 "http://www.mall121.com/" "Mozilla/4.0 (compatible; MSIE 8.0; Trident/4.0; Windows NT 6.1; SLCC2 2.5.5231; .NET CLR 2.0.50727; .NET CLR 4.1.23457; .NET CLR 4.0.23457; Media Center PC 6.0; MS-WK 8)" "140.205.201.12"
100.109.195.78 - - [17/Feb/2017:00:08:11 +0800] "GET /shop/templates/default/images/u-safe.png HTTP/1.0" 200 3675 "http://www.mall121.com/" "Mozilla/4.0 (compatible; MSIE 8.0; Trident/4.0; Windows NT 6.1; SLCC2 2.5.5231; .NET CLR 2.0.50727; .NET CLR 4.1.23457; .NET CLR 4.0.23457; Media Center PC 6.0; MS-WK 8)" "140.205.201.12"
100.109.195.26 - - [17/Feb/2017:00:08:11 +0800] "GET /data/upload/shop/adv/05240495346955824.jpg HTTP/1.0" 404 564 "http://www.mall121.com/" "Mozilla/4.0 (compatible; MSIE 8.0; Trident/4.0; Windows NT 6.1; SLCC2 2.5.5231; .NET CLR 2.0.50727; .NET CLR 4.1.23457; .NET CLR 4.0.23457; Media Center PC 6.0; MS-WK 8)" "140.205.201.12"
1.100.109.195.91  $remote_addr 客戶端(用戶) IP地址
2.[17/Feb/2017:00:08:11 +0800] $local_time 訪問時間
3."GET /data/upload/shop/common/loading.gif HTTP/1.0" $request GET請求的 url 地址
4.200 $status 請求狀態
5.134 $body_bytes_sent 請求頁面大小,默認 B
6."http://www.mall121.com/" $refer 頁面來源即從哪個頁面跳轉過來,專業叫refer
7."Mozilla/4.0 (compatible; MSIE 8.0; Trident/4.0; Windows NT 6.1; SLCC2 2.5.5231; .NET CLR 2.0.50727; .NET CLR 4.1.23457; .NET CLR 4.0.23457; Media Center PC 6.0; MS-WK 8)"  $http_user_agent 用戶瀏覽器信息,包含版本、類型等
8."140.205.201.12" $http_x_foewarded_for  php中可以通過你此項獲取用戶真實ip地址

  我們也可以根據自己需要日志信息在 nginx 配置文件中修改日志格式

       設置 error_log

       配置錯誤日志文件的路徑和級別

error_log file [level];
Default:	
error_log logs/error.log error;

    第一個參數指寫入錯誤日志的路徑

      第二個參數指日志的級別。level 可以是:debug、info、notice、warn、error、crit、alert、emerg 中的任意值。只有日志的錯誤級別

      大於等於level 指定的值才會被寫入錯誤日志中,默認值是 error


免責聲明!

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



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