linux系統上nginx配置按天生成日誌檔案
阿新 • • 發佈:2020-11-17
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檔案,然後刪掉。
編輯好指令碼後按照第四步加入到定時器中就好了。