gpt4 book ai didi

ruby-on-rails - 如何在 Rails 中记录 user_name?

转载 作者:行者123 更新时间:2023-12-03 21:02:44 29 4
gpt4 key购买 nike

我在 Rails 3 中使用 Devise。我想在 production.log 中看到 current_user 的名称。

我想像这样配置 rails :

config.log_tags = [:user_name]

最佳答案

我发现这个有点棘手但有效的解决方案。

Warden 将用户信息存储在 session 中,但 req.session 不可用于日志记录。

所以你必须把它添加到 config/application.rb

config.middleware.delete(ActionDispatch::Cookies)
config.middleware.delete(ActionDispatch::Session::CookieStore)
config.middleware.insert_before(Rails::Rack::Logger, ActionDispatch::Session::CookieStore)
config.middleware.insert_before(ActionDispatch::Session::CookieStore, ActionDispatch::Cookies)

然后创建文件 config/initializers/logging.rb
Rails.configuration.log_tags = [
proc do |req|
if req.session["warden.user.user.key"].nil?
"Anonym"
else
"user_id:#{req.session["warden.user.user.key"][0][0]}"
end
end
]

现在我看到这个匿名:
[Anonym] Served asset ...

这对于用户:
[user_id:1] Served asset ...

关于ruby-on-rails - 如何在 Rails 中记录 user_name?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10811393/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com