Rails 日志中记录当前用户

查看日志的时候,如果能看到引起该操作的用户是哪个就会方便多了。

Rails 的 config 支持添加 log_tag,它有一些内置的选项,比如 subdomainrequest_id 也可以添加一些 Proc。

将以为的配置代码插入到 config/application.rb 就会在日志中插入一些标记,打印出 session 中的 user_id

config.log_tags = [
  :request_id,
  ->(req) {
    session_key = (Rails.application.config.session_options || {})[:key]
    session_data = req.cookie_jar.encrypted[session_key] || {}
    user_id = session_data["user_id"] || "guest"
    "user: #{user_id.to_s}"
  }
]

之后日志看起来就是这样:

[some-request-id] [user: 123] ...
[some-request-id] [user: guest] ...

如果需要更多的上下文,可以看一下 https://github.com/remind101/request_id 应该也很有用。

原文看这里 Better Rails Logs: Current User Request Context

如果觉得我的文章对您有用,请在支付宝公益平台找个项目捐点钱。 @Victor Sep 20, 2018

奉献爱心