提问人:David Harkness 提问时间:3/15/2013 最后编辑:David Harkness 更新时间:3/30/2013 访问量:578
如何为从后台任务报告给 New Relic 的错误设置“URL”
How to set "URL" for errors reported to New Relic from background tasks
问:
New Relic 中的 Events : Errors 选项卡显示我的应用程序使用 .对于那些从网络交易中报告的,它显示了交易的 URL,这是完美的。但对于使用注释报告的后台任务,它会显示线程的名称。这毫无意义,因为线程的名称类似于 。NewRelic.noticeError(exception)
@Trace
pool-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 列列出了线程的名称而不是事务。ExceptionLogger
ping
答:
1赞
Dan Delany
3/29/2013
#1
根据您在注释中设置的参数,您将看到 New Relic UI 中记录的后台任务中错误的错误 URL 的不同值。@Trace
将 和 设置为 ,如metricName
dispatcher
true
@Trace(metricName = "YourErrorNameHere", dispatcher = true)
将显示的 URL 设置为 YourErrorNameHere
指定 no 但仍设置为 ,如metricName
dispatcher
true
@Trace(dispatcher = true)
将显示的 URL 设置为您的类名/方法名,例如 com.example.task.BackgroundTask/run
如果仅单独使用而不设置为 ,则将显示线程名称。@Trace
dispatcher
true
我们将来会更新我们的文档,以使其更清晰。
评论
0赞
David Harkness
3/30/2013
它现在正在工作。在实际抛出异常的后台任务中,我错误地将注释放在调用链下游的方法上,以便在事务之外调用该方法。@Trace
noticeError
下一个:向未捕获的异常添加额外信息
评论