有没有办法手动推送NewRelic错误?

29

在我们的Rails应用中,我们通过在ApplicationController中捕获大多数异常来提供正确的API响应,但我们仍然想使用ErrorCollector跟踪发生的错误。有没有办法手动将错误发送到NewRelic?

3个回答

41
根据我在 New Relic 代理代码中所看到的,你可以执行: NewRelic::Agent.notice_error(exception, options) 我已经测试过并在我的站点上运行成功。
这里是一个控制器的示例:
class ApplicationController < ActionController::Base
  rescue_from ActiveRecord::RecordInvalid, with: :rescue_invalid_record

  private

  def rescue_invalid_record(exception)
    NewRelic::Agent.notice_error(exception)
  end
end

3
这是相应的文档:http://rdoc.info/github/newrelic/rpm/NewRelic/Agent:notice_error它基本上是Igor在他的解决方案中包含的方法的别名,只是返回nil而不是异常。因此,尽管它的行为有些不同,但本质上它是相同的东西,并且更加简洁明了。 - Sean Moubry
为了增加更多的上下文,我在前面加上:NewRelic::Agent.add_custom_attributes({ custom_params: params.to_unsafe_h.merge(current_user: current_user.id), uri: request.original_url }) - Alberto T.

5

不确定这是否是推荐的使用方式,但这样做非常完美:

NewRelic::Agent.agent.error_collector.notice_error( exception )

20
我在New Relic工作。虽然这种方法可能在今天可行,但它不是我们的公共API的一部分,因此不应使用-它可能会在未来的任何时候更改。正确的方法是使用 NewRelic :: Agent.notice_error,如nort的回复中所述。任何没有在我们的公共API文档 中记录的内容都属于同一类别。 - grumbler

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接