最近在處理公司production的log rotation,找了一下資料,發現linux本身就有一個很好用的工具 logrotate ,這裡就來做一個簡單的介紹。
logrotate 是linux提供的一個工具專門用來做log rotation,它會由cron job定期去執行對應的設定檔來做rotation。預設的設定檔是放在/etc/logrotate.conf,如果是自訂義的設定檔則會放在/etc/logrotate.d/下。
下面是一個設定檔的範例:
/etc/logrotate.d/rails/var/www/ukik/shared/log/*.log {
weekly
size=100M
rotate 10
create 0664 appuser appuser
}
參數說明:
weekly
指每週定期做rotation。size=100M
每100M做一次rotation,如果 weekly 與 size 這兩個設定都有加,表示如果檔案不到100M便不會生成rotation。rotate 10
要保留幾次rotation。create 0664 appuser appuser
rotation log建立時的檔案權限與所屬的使用者/群組。除了上面提到的設定,其實 logrotate 還有非常多的功能可以做調整,細節與使用方式可以參考 man logrotate 。