我在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()));
}
但是这种方法不能以一种易于阅读的方式格式化错误日志。
我四处寻找有关此问题的信息,因为这显然是应该记录的,因为它是它的组成部分之一。但是我以某种方式从未见过任何东西。它主要是关于跨度的构建和构造。 希望在捕获和记录异常方面有人可以帮助我。
答案 0 :(得分:0)
这个问题看起来与Java本身有关,而不是与Opentracing和Jaeger有关。因为ex.getStackTrace()
的问题更多。应该更像
StringWriter errors = new StringWriter();
ex.printStackTrace(new PrintWriter(errors));
span.setTag("error", true);
span.log(ImmutableMap.of("stack", errors));
问题解决了。