新遗迹404,422和500异常与Rails动态异常处理



我运行的是Rails 4.0.0。rc应用程序使用New Relic进行可用性/异常监控。我用下面的代码片段修改了application.rb,以启用动态异常页面:

config.exceptions_app = self.routes

然而,我不再看到404, 422500异常在新遗迹。知道我怎么拿回来吗?

编辑:

注意:这是控制器处理状态的样子:

class ErrorsController < ApplicationController
  # GET /404
  def missing
    render status: 404
  end
  # GET /422
  def unprocessable
    render status: 422
  end
  # GET /500
  def exception
    render status: 500
  end
end

听起来您想调用NewRelic::Agent。手动notice_error。

您可以从Rack环境中重构请求对象,并根据需要构建异常。


request = Rack::Request(env)
options = {
  :uri => request.url,
  :referrer => request.referrer,
  :request_params => request.params
}
NewRelic::Agent.notice_error(your_custom_exception, options)

请注意,请求参数将按原样传输,因此要小心过滤任何敏感内容。

来源:
我在New Relic担任Ruby代理工程师
说明:http://rubydoc.info/gems/newrelic_rpm/frames

您必须在错误控制器中将html状态码设置为正确的值。例如,如果你有这样的内容:

类ErrorsController <程序控制器>

 # 404
 def not_found 
   render "not_found", status: 404
 end

结束

否则,rails将显示带有200状态码的错误页面,并且new relic不会将其作为错误拾取。

最新更新