我正在使用New Relic运行Rails 4.0.0.rc应用程序以进行可用性/异常监视。我使用此代码段修改了application.rb
以启用动态异常页面:
config.exceptions_app = self.routes
但是,我不再在New Relic中看到404
,422
或500
例外。知道我怎么让他们回来?
修改:
注意:这是处理状态的控制器:
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
答案 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状态代码呈现错误页面,并且新文件不会将其作为错误提取。