BufferedLogger

デフォルトのロギングがrubyのLoggerクラスではなく、ActiveSupport::BufferedLogger クラスに変わっています。


WebJourneyでは、Applicationのロギングとフレームワークのロギングを明確に区別するために、

class Logger
  %w(fatal error warn info debug).each do |level|
    module_eval %{
      def app_#{level}(msg, &block)
        if block
          self.#{level} wj_msg_build('#{level}', msg) do block.call end
        else
          self.#{level} wj_msg_build('#{level}', msg)
        end
      end
    }
  end

  private
  def wj_msg_build(level, msg)
    "[WebJourney][#{level.camelize}] - #{msg}"
  end
end

で、Loggerクラスに app_* メソッドを付け加えていたのですが、どうもこれはいけない。ということで、lib/app_logging.rb に AppLoggingという形でモジュールを定義して、environment.rb に

RAILS_DEFAULT_LOGGER.extend(AppLogging)

でオブジェクト拡張して解決。Loggerクラスの拡張がいらなくなったと思うので削除っと。