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

dp9463 · 2019年09月26日 · 最后由 piecehealth 回复于 2019年09月27日 · 3346 次阅读

我需要监控系统里面所有请求的 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 处理,有的话也能被订阅到。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号