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

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腳本源碼,方便讀者做測試:

1

2

3

4

5

6

7

8

#!/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`

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

  

  

  然後查看最終效果

  

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

以下文章點擊率最高

Loading…

     

如果這文章對你有幫助,請掃左上角微信支付-支付寶,給於打賞,以助博客運營