我們觀察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...