(この質問に適切なSEサイトがあることを願っています。そうでない場合は、お詫びします。)
Apache + mod_Rails(passenger)を使用してデプロイされたRuby-on-Railsアプリケーションがあります。データベースバックエンドにMySQLを使用します。 SyslogLogger
を使用してRoRログをsyslogに送信し、logrotate
を毎日のcronジョブで使用してログをローテーションしています。
私が見つけたのは、ログを回転させたときにRoRアプリが何かの途中にあると、ハングするということです。 copytruncate
をlogrotate
構成に入れようとしましたが、これはApache
ログにも影響するようです(おそらくRoRエラーログはApache
のerror.log
ファイルに移動するため)。どのログがクラッシュを引き起こしたかを正確に関連付けるため)。
インターネットで検索すると、ログローテーションでいくつかの異なる解決策が見つかります。1つはcopytruncate
キーを使用すること、もう1つはcronolog
を使用することですが、私が見ている問題に直接対処するものはまだ見つかりません。
それで、これに対する既知の解決策はありますか? RoRアプリケーションでログをローテーションする「正しい方法」は何ですか(デプロイにApacheとmod_Railsを使用)?アプリケーションに漠然と関連しているevery logrotate構成ファイルにcopytruncate
を入れるだけでいいですか?
'copytruncate'の代わりに、これらの行は私のRails app:
postrotate
touch /your-Rails-directory/tmp/restart.txt
endscript