使用Opentracing和Jaeger记录异常

时间:2019-03-18 13:44:25

标签: 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()));
    }

但是这种方法不能以一种易于阅读的方式格式化错误日志。

我四处寻找有关此问题的信息,因为这显然是应该记录的,因为它是它的组成部分之一。但是我以某种方式从未见过任何东西。它主要是关于跨度的构建和构造。 希望在捕获和记录异常方面有人可以帮助我。

1 个答案:

答案 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));

问题解决了。