Nginx不支援像Apache 一樣使用cronolog來輪轉日誌,但是可以採用以下方式來實現記錄檔的切割:
mv /data1/logs/access.log /data1/logs/20111030.log
kill -USR1 Nginx主進程號
通過mv命令將記錄檔重新命名為/data1/logs/20111030.log,然後發送kill -USR1訊號給Nginx的主進程號,讓Nginx
重建一個新的記錄檔/data1/logs/access.log。
如果想每天定時切割日誌,還須要藉助crontab。我們可以寫一個按天切割的日誌,按年、月
份目錄存放日誌的shell指令碼:
代碼如下 |
複製代碼 |
#!/bin/bash # This script run at 04:00 # The Nginx logs path logs_path="/home/www/data/logs/" mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/ mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"% m")/access_$(date -d "yesterday" +"%Y%m%d").log kill -USR1 `cat /usr/local/servers/nginx/nginx.pid` |
賦予可執行許可權:
執行命令crontab -e進入編輯狀態
代碼如下 |
複製代碼 |
00 04 * * * /root/cut_logs.sh |
這樣就每天淩晨4點你的系統就會自動切割nginx日誌了哦。
如果你想更換其它時間的話我們可以修改00 04 * * * /root/cut_logs.sh 這一句,如改成每天的00:00切割nginx訪
問日誌
crontab -e
輸入以下內容:
代碼如下 |
複製代碼 |
00 00 * * * /bin/bash /usr/local/nginx/sbin/cut_nginx_log.sh |
即可了,只要修改前面的數字就行了。