nginx日誌切割
作用:
如果日誌文件比較大,MV是需要時間的,這段時間內的日誌有可能丟失。logrotate可以在切割日誌的同時,不丟失數據。
vi /etc/logrotate.d/nginx
/usr/local/nginx/logs/*.log {
daily
rotate 7
missingok
notifempty
dateext
sharedscripts
postrotate
if [ -f /usr/local/nginx/logs/nginx.pid ]; then
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
fi
endscript
}
腳本解釋:
/usr/local/nginx/logs/*.log { nginx的日誌路徑
/usr/local/nginx/logs/www.qq.com.log error.log { 可以指定日誌,用空格分開
daily 每天輪詢
rotate 7 保留7天
missingok 如果日誌丟失,不報錯繼續滾動下一個日誌
notifempty 當日誌為空時不進行滾動
dateext 在文件末尾添加當前日期
sharedscripts 運行postrotate腳本
postrotate 腳本內容,給NGINX發信號要求重新生成日誌,如果nginx沒開起來就不操作
if [ -f /usr/local/nginx/logs/nginx.pid ]; then
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
fi
endscript
}
測試,有生成就代表配置成功
/usr/sbin/logrotate -f /etc/logrotate.d/nginx
配置crontab
00 00 * * * /usr/sbin/logrotate -f /etc/logrotate.d/nginx
也可以放入/etc/cron.daily/
一定要註意:1、在測試切割是否成功,一定要先備份一下!如果想保留全部日誌,設置一個很大的值比如3650,如果你 註釋rotate或者不加,那麽不會切割成功。
nginx日誌切割