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


一、日志管理

  先來看看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`

  接下來做個定時任務,按指定時間自動執行此腳本(這里我是做測試,所以我每分鍾執行一下這個腳本,方便看效果)

  

  

  然后查看最終效果

  

  此時,我們已經完成了用定時任務執行腳本,然后做日志切割備份。

 

 

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

  互相學習,共同進步!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM