Java 如何设置;URL";对于从后台任务报告给New Relic的错误
NewRelic中的事件:错误选项卡显示应用程序使用Java 如何设置;URL";对于从后台任务报告给New Relic的错误,java,error-reporting,newrelic,Java,Error Reporting,Newrelic,NewRelic中的事件:错误选项卡显示应用程序使用NewRelic.noticeError(异常)报告的异常(日期、时间、消息和堆栈跟踪)。对于那些从web事务中报告的事务,它显示了完美的事务URL。但是对于使用@Trace注释报告的后台任务,它会显示线程的名称。这是没有意义的,因为线程的名称类似于pool-23-thread-9927 我是否可以为每个后台任务分配一个显示名称,或者在报告错误时传递一个名称,以便它显示在URL列中,而不是线程的名称中 注意:如果可以避免的话,我宁愿不更改线程的
NewRelic.noticeError(异常)
报告的异常(日期、时间、消息和堆栈跟踪)。对于那些从web事务中报告的事务,它显示了完美的事务URL。但是对于使用@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);
}
}
}
公共类PingJob实现可调用
{
@跟踪(metricName=“ping”,dispatcher=true)
@凌驾
公共状态调用(){
试一试{
//可能引发异常的调用
}
捕获(运行时异常e){
//传递到实用程序方法以记录和/或向New Relic报告
例外日志(e,log);
}
}
}
我在NewRelic站点上看到了由
ExceptionLogger
报告的异常,但是URL列列出了线程的名称而不是事务,在这种情况下,ping
取决于您在@Trace
注释中设置的参数,对于后台任务中的错误,您将看到在NewRelic UI中记录的错误URL的不同值
指定metricName
并将dispatcher
设置为true
,如中所示
@Trace(metricName = "YourErrorNameHere", dispatcher = true)
@Trace(dispatcher = true)
将在此处将显示的URL设置为YourErrorName
指定nometricName
,但仍将dispatcher
设置为true
,如中所示
@Trace(metricName = "YourErrorNameHere", dispatcher = true)
@Trace(dispatcher = true)
将显示的URL设置为您的类名/方法名,例如com.example.task.BackgroundTask/run
如果您只是单独使用@Trace
,而没有将dispatcher
设置为true
,则将显示线程名称
我们将在将来更新我们的文档,以使其更清晰。现在正在运行。在实际引发异常的后台任务中,我错误地将
@Trace
注释放在调用链的更下游的一个方法上,从而在事务之外调用了noticeError
。