如何为从后台任务报告给 New Relic 的错误设置“URL”

How to set "URL" for errors reported to New Relic from background tasks

提问人:David Harkness 提问时间:3/15/2013 最后编辑:David Harkness 更新时间:3/30/2013 访问量:578

问:

New Relic 中的 Events : Errors 选项卡显示我的应用程序使用 .对于那些从网络交易中报告的,它显示了交易的 URL,这是完美的。但对于使用注释报告的后台任务,它会显示线程的名称。这毫无意义,因为线程的名称类似于 。NewRelic.noticeError(exception)@Tracepool-23-thread-9927

是否可以为每个后台任务分配一个显示名称,或者在报告错误时传递一个显示名称,以便它显示在 URL 列中而不是线程的名称中?

注意:如果可以避免,我宁愿更改线程的名称。

更新

下面是代码的概述。包含捕获并报告异常的事务。PingJob

public class PingJob implements Callable<PingStatus>
{
    @Trace(metricName = "ping", dispatcher = true)
    @Override
    public PingStatus call() {
        try {
            // calls that may throw exceptions
        }
        catch (RuntimeException e) {
            // pass to utility method to log and/or report to New Relic
            ExceptionLogger.log(e, LOG);
        }
    }
}

我在 New Relic 网站上看到了报告的异常,但在本例中,URL 列列出了线程的名称而不是事务。ExceptionLoggerping

Java 错误报告 NewRelic

评论


答:

1赞 Dan Delany 3/29/2013 #1

根据您在注释中设置的参数,您将看到 New Relic UI 中记录的后台任务中错误的错误 URL 的不同值。@Trace

将 和 设置为 ,如metricNamedispatchertrue

@Trace(metricName = "YourErrorNameHere", dispatcher = true)

将显示的 URL 设置为 YourErrorNameHere

指定 no 但仍设置为 ,如metricNamedispatchertrue

@Trace(dispatcher = true)

将显示的 URL 设置为您的类名/方法名,例如 com.example.task.BackgroundTask/run

如果仅单独使用而不设置为 ,则将显示线程名称。@Tracedispatchertrue

我们将来会更新我们的文档,以使其更清晰。

评论

0赞 David Harkness 3/30/2013
它现在正在工作。在实际抛出异常的后台任务中,我错误地将注释放在调用链下游的方法上,以便在事务之外调用该方法。@TracenoticeError