一、日志管理
先來看看ngnix的配置文件的server段
接下來我們解釋一下默認格式的具體意思
#log_format main '$remote_addr(遠程IP) - $remote_user(遠程用戶) [$time_local](訪問時間) "$request"(請求方式) '
# '$status(狀態302、404、401、403等) $body_bytes_sent(請求體 body 長度等) "$http_referer"(referer來源信息) '
# '"$http_user_agent(用戶代理)" "$http_x_forwarded_for(被轉發的請求的原始IP)"';
注:(1)http_x_forwarded_for:在經過代理時,代理把你的本來IP加在此頭信息中,傳輸你的原始IP
(2)日志的格式我們也可以自己定義
我們具體看一下日志記錄的信息
Ngnix允許針對不同的server做不同的log,接下來我們自己做一個
保存並退出,然后重新加載一次配置文件
因為我們沒開啟日志格式,進入配置文件開啟即可
接下來重載配置文件成功,然后訪問下服務器,再查看log目錄下是否有kelly.log日志文件,然后在more kelly.log看是否有日志記錄
二、用定時任務完成日志切割備份
思路:用shell寫一個腳本,每到00:00:01時就把昨天的日志按日期時間格式重命名,放在相應的目錄下,再用USR1信息號控制ngnix重新生成新的日志文件。
接下來我們在/usr/local/ngnix/data目錄下做實驗,創建一個shell腳本,文件名為runlog.sh
我以下圖對此腳本做詳細解釋
我附上該shell腳本源碼,方便讀者做測試:
#!/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`
接下來做個定時任務,按指定時間自動執行此腳本(這里我是做測試,所以我每分鍾執行一下這個腳本,方便看效果)
然后查看最終效果
此時,我們已經完成了用定時任務執行腳本,然后做日志切割備份。
如果您覺得您能在此博文學到了新知識,請為我頂一個,如文章中有解釋錯的地方,歡迎指出。
互相學習,共同進步!