Ngnix的日誌管理和用定時任務完成日誌切割

1、日誌管理html

先來看看ngnix的配置文件的server段linux

接下來咱們解釋一下默認格式的具體意思nginx

#log_format main '$remote_addr(遠程IP) - $remote_user(遠程用戶) [$time_local](訪問時間) "$request"(請求方式) 'shell

# '$status(狀態30二、40四、40一、403等) $body_bytes_sent(請求體 body 長度等) "$http_referer"(referer來源信息) 'bash

# '"$http_user_agent(用戶代理)" "$http_x_forwarded_for(被轉發的請求的原始IP)"';服務器

注:(1)http_x_forwarded_for:在通過代理時,代理把你的原本IP加在此頭信息中,傳輸你的原始IPide

(2)日誌的格式咱們也能夠本身定義學習

咱們具體看一下日誌記錄的信息測試

Ngnix容許針對不一樣的server作不一樣的log,接下來咱們本身作一個spa

保存並退出,而後從新加載一次配置文件

由於咱們沒開啓日誌格式,進入配置文件開啓便可

接下來重載配置文件成功,而後訪問下服務器,再查看log目錄下是否有kelly.log日誌文件,而後在more kelly.log看是否有日誌記錄

2、用定時任務完成日誌切割備份

思路:用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_pathmv $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`

接下來作個定時任務,按指定時間自動執行此腳本(這裏我是作測試,因此我每分鐘執行一下這個腳本,方便看效果)

而後查看最終效果

此時,咱們已經完成了用定時任務執行腳本,而後作日誌切割備份。

若是您以爲您能在此博文學到了新知識,請爲我頂一個,如文章中有解釋錯的地方,歡迎指出。

互相學習,共同進步!

相關文章
相關標籤/搜索