【问题标题】:NewRelic sneaky reporting of exceptions with noticeNetworkFailureNewRelic 通过noticeNetworkFailure 偷偷报告异常
【发布时间】:2013-12-04 09:20:52
【问题描述】:

我们希望在 Mobile 中使用 NewRelic 的 noticeNetworkFailure 行为在 catch 语句中偷偷记录实际上不是网络异常的异常;因为这似乎是目前使用 NewRelic Mobile 跟踪异常的唯一方法。

下面的示例代码似乎没有上传任何事件信息,我琢磨了一下可能是因为NewRelic识别出异常不是网络异常而忽略了调用。

long time = System.currentTimeMillis();
NewRelic.noticeNetworkFailure("HomeFragment.updateUi.IllegalStateException", time, time, new IllegalStateException());

URL 值只是我们用 classname.method(or subclass then method).exceptionType 制作的字符串,它允许识别相关代码,并且理论上会将异常分组到 NewRelic 中的公共 URL 下.

以前有没有人这样做过,或者知道我可以做些什么来实现这一点?

注意:NewRelic 在所有其他方面都运行良好,它的踪迹和其他报告运行良好。

更新 #1: 似乎仍然无法通过 URL 验证?我使用下面的编码触发了许多通知,但仍然让 Harvester 发送 0 个 HTTP 错误。

NewRelic.noticeNetworkFailure("http://exception.com/HomeFragment/updateUi/IllegalStateException", time, time+1, new IllegalStateException());

【问题讨论】:

    标签: newrelic newrelic-platform


    【解决方案1】:

    不幸的是,如果没有进一步的偷偷摸摸,这是行不通的。网络错误不被视为 HTTP 错误,将与 HTTP 事务一起分组。相反,像这样使用 NewRelic.noticeHttpTransaction:

    NewRelic.noticeHttpTransaction("http://exception.com/HomeFragment/updateUi/IllegalStateException", 500, time, time+1, 0, 0);
    

    如果您在字符串前面添加http://exception/...,您将通过验证(尽管请注意字符串中的字符)并且错误将显示在 newrelic.com 的 HTTP 错误页面上。在开头添加exception 会将这些错误分组以便于阅读。但是,请注意,您会将这些错误与您的应用生成的“真实”错误混为一谈。

    很高兴听到 New Relic 很适合您,谢谢!

    【讨论】:

    • 感谢 asm 这正是我所追求的:D
    • 嗯,它似乎仍然未能通过检查/验证,有什么想法吗?我在上面添加了更新。
    • 真棒@asm 谢谢,我曾希望使用noticeHttpFailure 以便我可以传递堆栈跟踪的异常,但我假设这不起作用,因为异常是类型检查的相关性?现在,noticeHttpTransaction 会做得很好,干杯:)
    • 在查看了NewRelic中的实现后,我注意到堆栈跟踪是由NewRelic在使用noticeHttpTransaction时提供的,这正是我想要的;谢谢你!
    猜你喜欢
    • 2012-09-20
    • 1970-01-01
    • 2013-11-30
    • 2015-09-07
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多