參考文章:https://juejin.im/post/5aa09bb3f265da238f121b6cphp
本篇文章主要介紹一下 nginx 服務器兩種日誌查看:access_log、error_lognginx
access_log:指的是訪問日誌,咱們經過訪問日誌能夠獲取用戶的 IP、請求處理的時間、瀏覽器信息等瀏覽器
error_log:錯誤日誌記錄了訪問出錯的信息,能夠用於定位錯誤的緣由緩存
設置 access_log服務器
訪問日誌主要用於記錄客戶端的請求。客戶端向 nginx 服務器發起的每一次請求都會被記錄到 access_log 中。ide
包含請求 IP、時間、訪問 url等等,固然訪問日誌中具體記錄哪些日誌信息咱們能夠經過 log_format 設置post
查看日誌存放地址url
find / -name nginx.confdebug
根據查詢出來地址,進入 nginx.conf 文件查找 access_log 和 error_log 文件的路徑3d
設置 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