如何在每条日志消息(Rails 3)中添加会话ID?

Fel*_*vni 5 session logging ruby-on-rails-3

我的想法是捕获session_id并将其存储在线程本地存储中,例如

Thread.current[:session_id] = session[:session_id]
Run Code Online (Sandbox Code Playgroud)

但是在调用过滤器之前会发生一些rails记录.

我以为我可以通过编写中间件插件来捕获session_id.但同样,我似乎没有及早得到所有日志记录.

我最早可以捕获session_id的是什么?

谢谢!

shi*_*eya 5

由于Rails 3.2使用log_tags配置数组支持标记日志记录,log_tags数组接受Proc对象,并且使用请求对象调用proc对象,我可以配置log_tags以下方式:

config.log_tags = [ :uuid, :remote_ip,
                    lambda {|req| "#{req.cookie_jar["_session_id"]}" } ]
Run Code Online (Sandbox Code Playgroud)

它与Rails 3.2.3一起使用,ActiveRecord的会话存储正在使用中.