我在 Heroku 上的 Rails 4 应用程序(目前在 unicorn 上)通常不会有太多错误,但会收到大量错误的 URL。每当输入错误的 URL 时,用户都会看到我的 404 页面,并且 Rails 中会引发 ActionController::RoutingError 。这会被报告给 Rollbar 和 NewRelic 作为错误,并且他们会发出警报。我不断收到来自 NewRelic 的关于所有这些“错误”的警报。如何防止将路由错误报告为错误?
(我尝试将 newrelic.yml 中的一行更改为
ignore_errors: ActionController::RoutingError
但没有帮助。)
由于另一个答案负责 New Relic,Rollbar 中的解决方案是将以下行添加到 config/initializers/rollbar.rb 中(有关更多信息,请参阅该文件中的注释):
config.exception_level_filters.merge!('ActionController::RoutingError' => 'ignore')
如果您使用服务器端配置(在 New Relic 中应用程序的“设置”页面上确定),请确保
ActionController::RoutingError
包含在 Ignore these errors
字段中。
您也可以尝试在 Heroku 上设置一个环境变量来忽略此类错误。 例如,
NEW_RELIC_ERROR_COLLECTOR_IGNORE_ERRORS="ActiveRecord::RecordNotFound, ActionController::RoutingError"
即使
Rollbar
推荐通过ActionController::RoutingError
路线处理match '*unmatched'
,这仍然无法消除最终出现在Rollbar中的内部Rails警告。
要抑制警告,您可以将其添加到 Rollbar 配置中:
/config/rollbar.rb
Rollbar.configure do |config|
# ...
config.exception_level_filters['ActionController::RoutingError'] = 'ignore'
end
另一种选择是在 Rails 处理请求之前添加一个中间件来约束请求。