使用logrotate定期切割nginx日誌
阿新 • • 發佈:2021-06-22
nginx環境
- nginx安裝位置:/usr/local/nginx
按天切割nginx日誌的配置
vim /etc/logrotate.d/nginx
/usr/local/nginx/logs/*.log { daily size 10m minsize 10m rotate 30 missingok notifempty compress nodelaycompress copytruncate dateext dateformat -%Y-%m-%d dateyesterday postrotate if [ -f /usr/local/nginx/logs/nginx.pid ];then kill -USR1 `cat /usr/local/nginx/logs/nginx.pid` fi endscript }
配置說明:
- 按天切割
- 檔案大小為10M的時候才切割
- 保留最近30天的日誌檔案
- 切割中遇到日誌錯誤忽略
- 日誌如果為空將不進行切割和壓縮
- 以gzip壓縮
- 不要將剛切割後的日誌檔案放到下個迴圈中進行壓縮
- 切割後的日誌檔案新增副檔名
- 副檔名為年月日
- 副檔名的年月日為昨天的日期
- 在切割後執行 postrotate/endscript之間的命令,此處為熱重啟nginx
使用crontab定時執行logrotate
因為系統預設的logrotate規則比較奇葩,所以直接刪了預設規則,自行定義。
rm -rf /etc/cron.daily/logrotate
- 使用
crontab -e
新建crontab規則:00 00 * * * /usr/sbin/logrotate -f /etc/logrotate.d/nginx