Nginx實戰(三) 日誌配置與切割

2021-07-23 14:48:43 字數 2670 閱讀 7988

訪問日誌主要記錄客戶端訪問nginx的每乙個請求,格式可以自定義。通過訪問日誌,你可以得到使用者地域**、跳轉**、使用終端、某個url訪問量等相關資訊。

nginx中訪問日誌相關指令主要有兩條,一條是log_format,用來設定日誌的格式,另外一條是access_log,用來指定日誌文職的存放路徑、格式和快取大小。兩條指令在nginx配置檔案中的位置可以在http之間。

log_format用來設定日誌格式,格式如下所示

log_format name(名稱) format(格式)

在nginx中有自己預設的日誌格式,如下內容:

# '"$http_user_agent" "$http_x_forwarded_for"';這段內容什麼意思呢?我們來理解下。

$remote_user:用於記錄遠端客戶端的使用者名稱(一般為「-」)

$time_local:用於記錄訪問時間和時區

$request:用於記錄請求的url以及請求方法

$status:響應狀態碼

$body_bytes_sent:給客戶端傳送的檔案主體內容大小

$http_user_agent:使用者所使用的**(一般為瀏覽器)

現在,我們新增乙個我們自定義日誌資訊。例如,如果我們用nginx作為反向**服務,就不能獲取客戶端的真實ip位址ip了,因為經過反向**後,在客戶端和web伺服器之間增加了中間層,因此web伺服器無法直接拿到客戶端的ip。

log_format mylog '$remote_addr [$time_local] "$request" $status';
日誌格式允許包含的變數注釋,如下所示

$remote_addr, $http_x_forwarded_for 記錄客戶端ip位址

$remote_user 記錄客戶端使用者名稱

$request 記錄請求的url和http協議

$status 記錄請求狀態

$body_bytes_sent 傳送給客戶端的位元組數,不包括響應頭的大小; 該變數與apache模組mod_log_config裡的「%b」引數相容。

$bytes_sent 傳送給客戶端的總位元組數。

$connection 連線的序列號。

$connection_requests 當前通過乙個連線獲得的請求數量。

$msec 日誌寫入時間。單位為秒,精度是毫秒。

$pipe 如果請求是通過http流水線(pipelined)傳送,pipe值為「p」,否則為「.」。

$http_referer 記錄從哪個頁面鏈結訪問過來的

$http_user_agent 記錄客戶端瀏覽器相關資訊

$request_length 請求的長度(包括請求行,請求頭和請求正文)。

$request_time 請求處理時間,單位為秒,精度毫秒; 從讀入客戶端的第乙個位元組開始,直到把最後乙個字元傳送給客戶端後進行日誌寫入為止。

$time_iso8601 iso8601標準格式下的本地時間。

$time_local 通用日誌格式下的本地時間。

用log_format指令設定了日誌格式之後,需要用access_log指令指定日誌檔案存放路徑。

格式如下所示

access_log path(存放路徑) [format(自定義日誌格式名稱) [buffer=size | off]]
在nginx中有自己預設的日誌路徑,如下內容:

#access_log logs/access.log main;
如果想關閉日誌,可以如下:

access_log off;
值得注意的是,nginx程序設定的使用者和組必須對日誌路徑有建立檔案的許可權,否則,會報錯。

此外,對於每一條日誌記錄,都將是先開啟檔案,再寫入日誌,然後關閉。可以使用open_log_file_cache來設定日誌檔案快取(預設是off)。

為了方便對日誌進行分析計算,需要對日誌進行定時切割。定時切割的方式有按照月切割、按天切割,按小時切割等。最常用的是按天切割。

#!/bin/bash

# 設定日誌檔案存放目錄

logs_path="/var/logs/nginx/"

# 設定pid檔案

pid_path="/usr/local/dev/nginx/nginx.pid"

# 重新命名日誌檔案

mv $access.log $access_$(date -d "yesterday" +"%y%m%d").log

# 向nginx主程序發訊號重新開啟日誌

kill -usr1 `cat $`

進行編輯

crontab -e
配置內容如下

0 0 * * * bash /usr/local/dev/nginx/nginx_log.sh
這樣在每天的夜晚12點就會自動建立備份檔案了。.

Nginx實戰(三) 日誌配置與切割

文章目錄 1.日誌配置 1.1.log format 1.2.access log 2.日誌切割 2.1.配置shell指令碼 2.2.crontab中設定定時作業 nginx中訪問日誌相關指令主要有兩條,一條是log format,用來設定日誌的格式,另外一條是access log,用來指定日誌文...

Nginx初學(三)日誌的配置

1 進入到nginx的日誌目錄,我們可以看到下圖的三個檔案 其中nginx.pid中存放的是程序號,access.log是訪問日誌,error是錯誤日誌。2 我們開啟配置檔案,可以設定自己的日誌檔案。如下,配置好後儲存,重啟nginx。server access log logs wuaipic.l...

SpringBoot 三 日誌檔案

總結 1 springboot底層使用slf4 logback的方式進行日誌記錄 2 springboot將其他的日誌檔案都替換成slf4.3 中間包替換?4 如果我們要引入其他框架?一定要把這個框架的預設配置移除掉 要不包名類名一直則衝突 如下圖 springboot日誌檔案配置預設是info級別...