Phusion Passengerのログローテート設定 ― 2017/04/12
logrotateでファイルがmvされてもPassengerは以前のファイルを掴んだままなので、これを手放させる必要がある。 方針は2つ?
logrotateをcopytruncateモードで動かす。
- 旧ログをmvではなくcpした上で旧ログの内容をクリアする。
- 処理時間がかかるのでログの取り零しが発生しうる。
# /etc/logrotate.d/passenger.log /path/to/app/shared/log/*log { weekly missingok rotate 1000 create 0644 user group copytruncate dateext }
logrotateのpostrotateでPassengerにアプリを再読み込みさせる。
- ログの取り零しは発生しない。
- 次回のアクセス時にRailsの起動コストがかかる。
# /etc/logrotate.d/passenger.log /path/to/app/shared/log/*log { weekly missingok rotate 1000 create 0644 user group dateext sharedscripts postrotate touch /path/to/app/current/tmp/restart.txt endscript }
うちは緩いサービスなのでcopytruncateで良いけど、copytruncateで取り零しが発生するようなサービスだと、Railsの起動コストはもっと耐えられないような気がするけど……。
最近のコメント