1

我最近将我的项目从 Spring Boot 1.4.1、Spring Cloud Sleuth 1.1.0、Spring Cloud Zipkin 1.1.0 升级到 Spring Boot 1.5.3、Spring Cloud Sleuth 1.2.0、Spring Cloud Zipkin 1.2.0。

阅读最新版本的 Spring Cloud Sleuth,他们添加了“错误”标签,如果出现任何异常,这些标签会自动报告给 Zipkin。

我有一个 @ControllerAdvice 类扩展 ResponseEntityExceptionHandler 用于自定义异常处理。在使用旧版本(Spring Boot 1.4.1、Spring Cloud Sleuth 1.1.0、Spring Cloud Zipkin 1.1.0)时,我能够使用以下方法向 Tracer 报告错误并在 Zipkin 中显示相同的错误:

private void reportErrorSpan(String errorDesc, String message) {
    if(tracer != null) {
        Span span = tracer.getCurrentSpan();
        span.logEvent("ERROR: " + message);
        tracer.addTag("error", errorDesc);
    }
}

升级后,这似乎不起作用,并且 spring cloud sleuth 的默认错误报告也没有发生。只有在注释掉 @ControllerAdvice 并让 Spring Boot 的默认 ErrorController 处理异常之后,我才能在 Zipkin 中可视化错误。但是,我们需要自定义异常处理来以标准方式格式化错误响应,并在我们所有的 PaaS 服务中使用错误代码。有没有办法做到这一点?我应该使用任何其他 Sleuth 对象来实现这一点吗?

4

1 回答 1

1

问题得到了解决 - https://github.com/spring-cloud/spring-cloud-sleuth/issues/585。在即将发布的 1.1.5 和 1.2.1 版本中,它应该可以工作

于 2017-05-08T09:12:55.147 回答