ログローテーションの落とし穴 Rails でのデフォルトのロガーは、Ruby 標準添付の Logger クラスを少し変えたものである。ログのサイズが大きくなったとき、サイズやら日付やらを基準にログのアーカイブ化を行う(ログローテーション)することが多い。一番簡単な方法は Developmentモードのログを日毎にローテートする みたいなやり方だ。しかし、複数の Ruby インスタンスがひとつのログファイルを共有すると、うまく動かないのだ。典型的なのは Mongrel Cluster で複数の Rails インスタンスを運用している状況だ。ログローテーションが起こった直後から、"Status: 500 Internal Server Error" というエラーメッセージを吐いて Rails アプリが動かなくなってしまう。 これは、Logger がローテーション時に、 現行のログファイルをアー