web-dev-qa-db-ja.com

Apache + Passenger + Ruby-on-Rails + mysqlを使用したログローテーションの最良の戦略は何ですか?

(この質問に適切なSEサイトがあることを願っています。そうでない場合は、お詫びします。)

Apache + mod_Rails(passenger)を使用してデプロイされたRuby-on-Railsアプリケーションがあります。データベースバックエンドにMySQLを使用します。 SyslogLoggerを使用してRoRログをsyslogに送信し、logrotateを毎日のcronジョブで使用してログをローテーションしています。

私が見つけたのは、ログを回転させたときにRoRアプリが何かの途中にあると、ハングするということです。 copytruncatelogrotate構成に入れようとしましたが、これはApacheログにも影響するようです(おそらくRoRエラーログはApacheerror.logファイルに移動するため)。どのログがクラッシュを引き起こしたかを正確に関連付けるため)。

インターネットで検索すると、ログローテーションでいくつかの異なる解決策が見つかります。1つはcopytruncateキーを使用すること、もう1つはcronologを使用することですが、私が見ている問題に直接対処するものはまだ見つかりません。

それで、これに対する既知の解決策はありますか? RoRアプリケーションでログをローテーションする「正しい方法」は何ですか(デプロイにApacheとmod_Railsを使用)?アプリケーションに漠然と関連しているevery logrotate構成ファイルにcopytruncateを入れるだけでいいですか?

2
Andrew Stacey

'copytruncate'の代わりに、これらの行は私のRails app:

  postrotate
    touch /your-Rails-directory/tmp/restart.txt
  endscript
2
Ribena