概要

Railsのログをローテートする方法はいくつかあります。
代表的なものにRailsのloggerに組み込まれているログローテーション機能を使う方法がありますが、Passenger環境で使う場合に多少の手直しが必要になってきます。(ログローテート後にPassengerがログにアクセスできなくなるためエラーが起きる)
Passenger + Rails 環境でログをローテートする場合、logrotateを使うのが簡単です。

コード

次のようなファイルを作成する

/etc/logrotate.d/passenger


/var/www/app/az-nyan/current/log/production.log {
  weekly
  missingok
  rotate 30
  compress
  delaycompress
  sharedscripts
  postrotate
    touch /var/www/app/az-nyan/current/tmp/restart.txt
  endscript
}

ローテート後にアプリを再起動しているのがミソ

次のコマンドで簡単にテストができます


logrotate -f /etc/logrotate.d/passenger

参考

Log Rotation for Phusion Passenger