ADJ網路實驗室
打印

[介紹] 如何使用 logrotate 幫 Nginx Log 以日期歸檔

如何使用 logrotate 幫 Nginx Log 以日期歸檔

最近剛好查 Nginx Log 的時候,發現主機沒有以日期來區分檔名,查起來很麻煩,所以順手來改了一下。

Linux 中的 logrotate 服務是專門把 log 進行歸檔的好用工具,直接在 /etc/logrotate.d/ 底下建立設定檔即可,Nginx Log Rotate 設定範例如下:
引用:
/var/log/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
}
上述的設定會把 /var/log/your-log-path 底下所有 *.log 檔案進行處理,說明一下:

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





TOP

ARTERY.cn