對Nginx日誌進行分割保存

Nginx有 access.log 和 error.log 兩個日誌文件,當然文件名稱是通過Nginx的conf文件進行配置的,不一定完全一樣。隨着項目的運行,這兩個日誌文件佔用的磁盤空間會越來越大,查詢效率越來越低,又不能直接刪除,不方便管理。這裏我們提供一個腳本,在不用變更配置文件的情況下,每天凌晨對前一天的日誌按日期進行重命名進行保存,新一天的日誌繼續寫入新的文件。

 

1 腳本

#!/bin/bash
#此腳本用於自動分割Nginx的日誌,包括access.log和error.log
#每天00:00執行此腳本 將前一天的日誌移動到按日期命名的目錄(如20210518)中,並重新打開日誌文件

#nginx日誌文件目錄
LOG_PATH=/home/work/project/log/
STORAGE_PATH="${LOG_PATH}nginx"
YESTERDAY_PATH="${STORAGE_PATH}"/$(date -d "yesterday" +%Y%m%d)

if [ ! -d "${STORAGE_PATH}" ]; then
mkdir "${STORAGE_PATH}"
fi

if [ ! -d "${YESTERDAY_PATH}" ]; then
mkdir "${YESTERDAY_PATH}"
fi

#pid文件路徑
PID=//home/work/canghai/var/nginx.pid

#轉移日誌
mv ${LOG_PATH}access.log ${YESTERDAY_PATH}/access.log
mv ${LOG_PATH}error.log ${YESTERDAY_PATH}/error.log

#向nginx主進程發送USR1信號,重新打開日誌文件
kill -USR1 `cat ${PID}`

 

2 部署

我們把該腳本放到服務器上,對其設置執行權限,把執行命令添加到crontab就行,每天0點執行一次。

00 00 * * * sh /some/path/nginx_log.sh
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章