java - 使用 Opentracing 和 Jaeger 记录异常
问题描述
我已经在 Java 环境中使用 Opentracing 设置了 Jaeger,它可以很好地使用跨度和跟踪记录消息。但是在捕获和记录异常时我有点卡住了。
try
{
span.log(ImmutableMap.of("Exeption", "ex"));
throw new IllegalArgumentException("Expecting one argument");
}
catch(Exception ex)
{
span.log(ImmutableMap.of("Error", ex));
span.log(ImmutableMap.of("Event", "error", "Error-object", ex, "message", ex.getStackTrace()));
}
但是这种方式不会以一种可读的方式格式化错误日志。
我已经四处寻找有关此的信息,因为感觉很明显应该存在,因为这是其用于记录的组件之一。但不知何故,我从未见过任何关于此的事情。它主要是关于构建和构建跨度。希望任何人在捕获和记录异常时都可以帮助我。
解决方案
这个问题看起来更多地与 Java 本身有关,然后是 Opentracing 和 Jaeger。这ex.getStackTrace()
是更多的问题。因为它应该更像
StringWriter errors = new StringWriter();
ex.printStackTrace(new PrintWriter(errors));
span.setTag("error", true);
span.log(ImmutableMap.of("stack", errors));
问题解决了。
推荐阅读
- spring-cloud - 用于 SSL 的 Spring Cloud Stream Binder Solace 配置
- python - 如果是奇数则返回数字的平方,如果是偶数则返回 (number-1) 平方
- asp.net-core - 在运行时应用迁移有什么缺点?
- mongodb - MongoDB查询优化或提高性能
- julia - 错误:MethodError:没有方法匹配 abs(::Array{Complex{Float64},1})
- json - Delphi 7:处理从网站读取的 JSON 响应中的 utf-8 数据
- r - 在shinyapps.io 上部署闪亮的应用程序时出错
- angularjs-directive - 如果绑定数据为空,想在 md-option 中显示自定义文本
- c - 使用单指针代替双指针
- java - 神经网络仅适用于简单的线性可分问题