1. 程式人生 > >Nginx執行日誌自動切割

Nginx執行日誌自動切割

所謂自動分割Nginx日誌檔案,就是指Rotate Nginx log files,即讓Nginx每天(或每個星期,可自定義控制)生成一個日誌檔案,而不是將Nginx所有的執行日誌都放置在一個檔案中,這樣每個日誌檔案都相對較小,定位問題也更容易。

現在以一個Nginx例項為例,可以寫一個指令碼來實現自動分割Nginx日誌

1、編寫自動分割Nginx日誌指令碼

#!/bin/bash
#Rotate the Nginx logs to prevent a single logfile from consuming too much disk space. 
LOGS_PATH=/usr/local/nginx/logs
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log
mv ${LOGS_PATH}/error.log ${LOGS_PATH}/error_${YESTERDAY}.log
## 向 Nginx 主程序傳送 USR1 訊號。USR1 訊號是重新開啟日誌檔案
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
:wq儲存,並命名為nginxLogRotate.sh,儲存到目錄/usr/local/nginx/logs

2、設定Linux定時任務

vi  /etc/crontab

在開啟的檔案底部新增如下內容

0 0 * * * root /usr/local/nginx/logs/nginxLogRotate.sh
:wq儲存,表示配置一個定時任務,定時每天00:00以root身份執行指令碼/usr/local/nginx/logs/nginxLogRotate.sh,實現定時自動分割Nginx日誌(包括訪問日誌和錯誤日誌)

至此,就實現了自動分割Nginx日誌,Nginx每天都會生成一個新的日誌檔案。