Linux 中的 logrotate 服務是專門把 log 進行歸檔的好用工具,直接在 /etc/logrotate.d/ 底下建立設定檔即可,Nginx Log Rotate 設定範例如下:
QUOTE:
/var/log/log-path/*.log {上述的設定會把 /var/log/your-log-path 底下所有 *.log 檔案進行處理,說明一下:
daily
dateext
dateformat -%Y-%m-%d
missingok
rotate 10
compress
delaycompress
notifempty
create 0644 nginx nginx
sharedscripts
postrotate
[ -s /run/nginx.pid ] && kill -USR1 `cat /run/nginx.pid`
endscript
}
daily 表示每天一份
dateext 表示歸檔加上日期字串
dateformat 設定日期字串格式
missingok 如果 log 不存在也沒關係(有些服務如果當日沒有 Log 連檔案都不會產生)
rotate 設定保留份數
copytruncate 採用複製一份再清空原本的 Log File,滿足某些服務無法直接更名 Log File 來實現 Rotate 功能
compress 把歸檔的 Log 進行壓縮 (預設用 gz)
delaycompress 前一次的檔案才進行壓縮,這個功能很好用,主要常常會看前一天的 Log,延後一次進行壓縮比較方便
notifempty 允許空白的 Log 檔
sharedscripts 等待 log 都處理完才執行一次 Hook Script
補充一下,上述的「kill -USR1」主要是將 Log 檔案重新命名後,通知 Nginx 重新開啟 Log File,
要測試寫好的設定檔可以用以下命令:
# logrotate -vf /etc/logrotate.d/your-conf-file