nginx 日誌檔案

2022-07-19 22:51:18 字數 2049 閱讀 8668

我們觀察nginx的server段,可以看到如下類似資訊

#access_log logs/host.access.log main;

這說明 該server, 它的訪問日誌的檔案是 logs/host.access.log ,

使用的格式」main」格式.

除了main格式,你可以自定義其他格式.

main格式是什麼?

$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 通用日誌格式下的本地時間。

1. 宣告乙個獨特的log_format並命名

2.在下面的server/location,我們就可以引用 mylog

access_log logs/access_8080.log mylog;  

宣告log   log位置          log格式;

對比日誌格式和輸出的結果可以發現,日誌格式用一對單引號包起來,多個日誌格式段用可以放在不同的行,最後用分號(;)結尾

單引號中的雙引號("),空白符,中括號([)等字元原樣輸出,比較長的字串通常用雙引號(")包起來,看起來不容易更加清楚,$開始的變數會替換為真實的值

==日誌分割==日誌分割==日誌分割==日誌分割==日誌分割==日誌分割==日誌分割==

分割指令碼 fenge.sh

#!/bin/bash

base_path='/usr/local/nginx/logs'

log_path=$(date -d yesterday +"%y%m")

day=$(date -d yesterday +"%d")

mkdir -p $base_path/$log_path

mv $base_path/access.log $base_path/$log_path/access_$day.log

#echo $base_path/$log_path/access_$day.log

kill -usr1 `cat /usr/local/nginx/logs/nginx.pid`

然後設定計畫任務,每天晚上分割一次

nginx 切割日誌檔案

1.首先編寫shell指令碼 cutlog.sh 放入nginx logs資料夾中 首先定義路徑變數 logs path usr local nginx logs 獲取昨天的 yyyy mm dd d date y m d 移動檔案 mv access.log log 向 nginx 主程序傳送 u...

Nginx 日誌檔案切割

阿里雲的nginx好久沒檢視過日誌,現在需要配置定時任務實現,日誌檔案切割,並刪除超過30天的日誌檔案。log.sh 指令碼檔案 bin bash 獲取當前時間 yyyy mm dd hh mm ss 格式 nowtime date y m d h m s cd usr local nginx mv...

nginx日誌檔案切割

建立指令碼logcut.sh,放到 opt nginx sbin下 在windows下編輯,可以把dos轉unix格式 bin bash 零點執行該指令碼 nginx 日誌檔案所在的目錄 logs path opt nginx logs 獲取昨天的 yyyy mm dd yesterday date...