我有一个自定义记录器,可从REMOTE_ADDR
事件中提取各种标题(特别是HTTP_X_FORWARDED_FOR
和ActiveSupport::Notifications
)。这对于控制器事件很好用,但是当出现RoutingError
时,我们再也不会碰到控制器,并且记录器获得的所有都是字符串的异常回溯。我可以订阅另一个活动吗?在命中控制器之前,如何获得请求失败的请求对象的访问权限?
我想您需要实现某种中间件来捕获在执行控制器操作之前发生的错误。
https://guides.rubyonrails.org/rails_on_rack.html
也许您可以从https://github.com/smartinez87/exception_notification借用一些代码,或使用它实现使用记录器的自定义通知程序https://github.com/smartinez87/exception_notification#notifiers。