{{ currentPost.title }}
{{ currentPost.datetime }}

最近在處理公司production的log rotation,找了一下資料,發現linux本身就有一個很好用的工具 logrotate ,這裡就來做一個簡單的介紹。

What

logrotate 是linux提供的一個工具專門用來做log rotation,它會由cron job定期去執行對應的設定檔來做rotation。預設的設定檔是放在/etc/logrotate.conf,如果是自訂義的設定檔則會放在/etc/logrotate.d/下。

How

下面是一個設定檔的範例:

/etc/logrotate.d/rails
/var/www/ukik/shared/log/*.log {
  weekly
  size=100M
  rotate 10
  create 0664 appuser appuser
}

參數說明:

  • 第一行指定了哪些檔案要做rotation,路徑後面接大括號放相關的設定。
  • weekly指每週定期做rotation。
  • size=100M每100M做一次rotation,如果 weekly 與 size 這兩個設定都有加,表示如果檔案不到100M便不會生成rotation。
  • rotate 10要保留幾次rotation。
  • create 0664 appuser appuserrotation log建立時的檔案權限與所屬的使用者/群組。

除了上面提到的設定,其實 logrotate 還有非常多的功能可以做調整,細節與使用方式可以參考 man logrotate 。

Refs