在Rails中为每个日志添加会话ID

Lie*_*oen 3 ruby-on-rails-3

有没有办法将会话ID添加到Rails中的每个日志.

现在,我在环境中添加了这个.rb:

class Logger
  def format_message(severity, timestamp, progname, msg)
    "#{timestamp.to_formatted_s(:db)} #{severity} #{msg}\n" 
  end 
end
Run Code Online (Sandbox Code Playgroud)

首先,这是最好的做法吗?我如何添加会话ID?

shi*_*eya 6

不幸的是,给人:session_idlog_tags还不能正常工作(截至2012年5月23日),因为在Rack中间件没有SESSION_ID.

由于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的会话存储正在使用中.

  • 请注意,"_session_id"可能会在config/initializers/session_store.rb中设置为其他内容 (3认同)