使用Rails动态异常处理的新Relic 404,422和500异常

时间:2013-06-17 00:29:48

标签: ruby-on-rails newrelic

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

config.exceptions_app = self.routes

但是,我不再在New Relic中看到404422500例外。知道我怎么让他们回来?

修改

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

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

2 个答案:

答案 0 :(得分:4)

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

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

这样的事情:

request = Rack::Request(env)

options = {
  :uri => request.url,
  :referrer => request.referrer,
  :request_params => request.params
}

NewRelic::Agent.notice_error(your_custom_exception, options)

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

来源:
我作为Ruby Agent工程师为New Relic工作 NoticedError的文档:http://rubydoc.info/gems/newrelic_rpm/frames

答案 1 :(得分:0)

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

class ErrorsController&lt; ApplicationController中

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

否则,rails将使用200状态代码呈现错误页面,并且新文件不会将其作为错误提取。