3

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

config.exceptions_app = self.routes

但是,我不再在 New Relic 中看到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
4

2 回答 2

4

听起来您想手动调用 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 工作,担任 NoticedError 的 Ruby 代理工程师
文档:http: //rubydoc.info/gems/newrelic_rpm/frames

于 2013-06-20T00:29:34.630 回答
0

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

类 ErrorsController < ApplicationController

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

结尾

否则,rails 将使用 200 状态代码呈现错误页面,并且 new relic 不会将其视为错误。

于 2013-06-19T08:15:01.000 回答