我运行的是Rails 4.0.0。rc应用程序使用New Relic进行可用性/异常监控。我用下面的代码片段修改了application.rb
,以启用动态异常页面:
config.exceptions_app = self.routes
然而,我不再看到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
听起来您想调用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不会将其作为错误拾取。