Rails 如何从 ActiveSupport::Notifications.subscribe 里面订阅到 response code 不是 200 的 event

dp9463 · September 26, 2019 · Last by piecehealth replied at September 27, 2019 · 3340 hits

我需要监控系统里面所有请求的 request 的 response time 和 response code,但是通过 ActiveSupport::Notifications.subscribe("process_action.action_controller") 取出的 payloadl 里面,payload[:status] 只能得到 200,如果为非 200 的 response,这个值则为空。

另外,假如我再 Rails 应用里面访问一个不存在的页面触发一个 404 Error,这个 request 也在 ActiveSupport::Notifications.subscribe("process_action.action_controller") 里面订阅不到。请问还有其他方法能抓到 404 的错误吗?

谢谢,拜读中

不过 404 Subscribe/notification 处理不到,在路由解析那里就抛出错了。

不过我这个 gem 里也对 404 做了专门处理。

if RailsLog.config.intercept_not_found
  Rails.application.routes.append do
    match '*path' => 'log/rails_log#not_found', via: :all
  end
end

把所有的 404 都指向 一个 controller/action ,

试过 Rails 6.0.0, 5.0.6,都能订阅非 200 请求。 不存在的页面看你有没有专门的 controller 处理,有的话也能被订阅到。

You need to Sign in before reply, if you don't have an account, please Sign up first.