如何将用户信息添加到 Airbrake 通知中?
How to add user information to Airbrake notifications?
我有一个 Rails 应用程序可以正常发送 Airbrake 通知,但我想在通知中添加一些用户信息。
我正在使用 airbrake gem, v5.7.1, which adds a middleware 捕获未捕获的异常并在重新引发之前报告它们。
我尝试按照 README 向初始值设定项添加过滤器:
class UserDetailsFilter
def call(notice)
if notice.stash.has_key?(:rack_request)
user_credentials = notice.stash[:rack_request].cookies["user_credentials"]
unless user_credentials.blank?
user_id = user_credentials.split(':').last
user = User.find(user_id)
notice[:params][:user_email] = user.email
notice[:params][:user_name] = "#{user.first_name} #{user.last_name}"
end
end
end
end
Airbrake.add_filter(UserDetailsFilter.new)
使用 binding.pry
我可以确认此代码是 运行 并且该通知确实修改了 :params
散列。然而,Airbrake UI 中的参数只有动作和控制器信息。
我不太清楚为什么这个信息没有显示在仪表板上,它应该在参数中显示就好了。
Airbrake gem 根据 https://airbrake.io/docs/api/#create-notice-v3 将用户信息设置为 notice[:context][:user]
。您可以尝试在那里设置该信息。
或者,如果您可以定义一个携带用户对象的 current_user
方法,那么库可以猜测您尝试为您检索的值。
def current_user
@current_user ||= User.find(user_id)
end
这是 Airbrake gem 中的一个错误,已修复并在 Airbrake 5.8.0 中发布。
我有一个 Rails 应用程序可以正常发送 Airbrake 通知,但我想在通知中添加一些用户信息。
我正在使用 airbrake gem, v5.7.1, which adds a middleware 捕获未捕获的异常并在重新引发之前报告它们。
我尝试按照 README 向初始值设定项添加过滤器:
class UserDetailsFilter
def call(notice)
if notice.stash.has_key?(:rack_request)
user_credentials = notice.stash[:rack_request].cookies["user_credentials"]
unless user_credentials.blank?
user_id = user_credentials.split(':').last
user = User.find(user_id)
notice[:params][:user_email] = user.email
notice[:params][:user_name] = "#{user.first_name} #{user.last_name}"
end
end
end
end
Airbrake.add_filter(UserDetailsFilter.new)
使用 binding.pry
我可以确认此代码是 运行 并且该通知确实修改了 :params
散列。然而,Airbrake UI 中的参数只有动作和控制器信息。
我不太清楚为什么这个信息没有显示在仪表板上,它应该在参数中显示就好了。
Airbrake gem 根据 https://airbrake.io/docs/api/#create-notice-v3 将用户信息设置为 notice[:context][:user]
。您可以尝试在那里设置该信息。
或者,如果您可以定义一个携带用户对象的 current_user
方法,那么库可以猜测您尝试为您检索的值。
def current_user
@current_user ||= User.find(user_id)
end
这是 Airbrake gem 中的一个错误,已修复并在 Airbrake 5.8.0 中发布。