log rotate

Shifting failed. '/foo/log/production.log.20090101' already exists.
というエラーが出てる。どうもloggerのlog rotateがうまく行っていない様子。
複数のプロセスが動いていることが原因?
config/initializers/logger.rb
ファイルを作って、Loggerを修正。
ログの取りこぼしがないかどうかは、未確認。

### Logger
# Original code is at /usr/lib/ruby/1.8/logger.rb

class Logger
  private
  class LogDevice
    def write(message)
      # FileUtils.touch('/tmp/logger.test.1.'+File.basename(@filename)) # debug code : monitor method call
      @mutex.synchronize do
        if @shift_age and @dev.respond_to?(:stat)
          begin
            check_shift_log
          rescue
            # origianl code
            # raise Logger::ShiftingError.new("Shifting failed. #{$!}") # original code
            # added (3 lines + 1 debug line)
            close
            @dev = open_logfile(@filename)
            @dev.sync = true
            # FileUtils.touch('/tmp/logger.test.2.'+File.basename(@filename)) # debug code : monitor rescue event
          end
        end
        @dev.write(message)
      end
    end
  end
end