1. 程式人生 > 實用技巧 >linux系統上nginx配置按天生成日誌檔案

linux系統上nginx配置按天生成日誌檔案

nginx日誌預設把日誌都寫到一個檔案中,這樣不方便管理,而且檔案容量會越來越大,所以為了方便管理分析日誌把日誌按天切割,即每天生成一個新的日誌檔案。

實現步驟

1. 找到nginx日誌檔案
我的檔案在/usr/local/nginx/logs這個路徑下,有個access.log檔案就是nginx的日誌檔案

2. 進入該路徑建立個sh檔案(稱為批處理日誌檔案)
touch part_log.sh(檔名自定義,字尾.sh即可)

3. 編輯part_log.sh檔案。輸入如下內容:
  vim part_log.sh

D=$(date +%Y-%m-%d)
LOGS_PATH=/usr/local/nginx/logs
mv ${LOGS_PATH}/access.log ${LOGS_PATH}/${D}.log
kill -USR1 $(cat
/usr/local/nginx/logs/nginx.pid)

說明:

  • 定義一個D變數並把當前系統時間賦值給D
  • 定義一個變數LOGS_PATH用來存放日誌的路徑
  • 使用mv命令把access.log日誌檔案, 以時間格式重新命名。 這樣nginx又會生成一個新的access.log檔案
  • kill -USR1 切換日誌檔案。語法:kill -USR1 主程序號

4. 設定好指令碼使用定時器每天23:59跑一次就好了
編輯定時器
crontab -e
輸入如下內容
59 23 * * * sh /usr/local/nginx/logs/cutlog.sh > /data/bak.log 2>&1


檢視定時器內容
crontab -l

crontab時間格式內容

*    *    *    *    *    command
M    H    D    m    d    command
分   時   日   月   周   命令
第1列表示分鐘1~59 每分鐘用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要執行的命令或指令碼內容  

5. 定時刪除以前的日誌
每天生成一個日誌檔案時間久了會產生很多檔案,所以需要定期的清理一下舊的檔案,
建立clear.sh檔案,輸入如下命令

說明:

  • find:查詢,liunx內建命令

  • /data/server/nginx/logs/:日誌所在目錄;

  • -mtime:標準語句寫法;

  • +10:查詢10天前的檔案,這裡用數字代表天數;

  • "*.log":log檔案;

  • -exec:固定寫法;

  • rm -rf:強制刪除檔案,包括目錄;

  • {} \; :固定寫法

連起來的意思就是,查詢指定目錄下10天前的*.log檔案,然後刪掉。

編輯好指令碼後按照第四步加入到定時器中就好了。