2013-06-26 6 views
5

私はアプリケーションの既存のロガーを使用して、私は、Railsアプリケーションに入れているミドルウェア内から物事をログしたいと思います。これを行う標準的な方法はありますか?頭に浮かぶ二つの可能性:RackミドルウェアからRailsロガーにアクセスできますか?

  1. ロガーは、ラック環境で直接アクセス可能です
  2. logerがいずれかの関与のソリューションを検索するミドルウェア

にアプリの起動時にアクセスして割り当てることができますこれらのうちはあまり出てこない。私は完全に考えていない/操作の順序が可能になるかどうかを確認するために実験した。

+1

あなたはRails.loggerに呼び出す試して見ることができました... – rogerdpack

+0

は、あなたがその名前とRubyの命名規則に基づいてRails' 'について何を知っていますか? –

答えて

2

私は、Rails.loggerをRack環境に追加するだけのミドルウェアを作成することで、これを動作させることができました。

module Something 
    class UseRailsLogger 
    def initialize(app) 
     @app = app 
    end 
    def call(env) 
     env['rack.logger'] ||= Rails.logger 
     @app.call(env) 
    end 
    end 
end 

あなたがlib/something/use_rails_logger.rbに、あなたはあなたのミドルウェア・スタックに追加することができますし、ロガーはそれの後に来るすべての層に利用できるようになることを隠しておく場合。

注:この設定を環境に依存する理由がないので、config/application.rbに追加しましたが、何らかの理由でrequire 'something/use_rails_logger'がそのファイルから機能しません。それをconfig/environment/*.rbに追加するだけでうまくいきました。 require横にあなたが必要なのは次のとおりです。

config.middleware.use Rack::UseRailsLogger 
関連する問題