我最近将我的项目从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 spring侦探的默认错误报告也没有发生。只有在注释掉@ControllerAdvice并让Spring Boot的默认ErrorController处理异常之后,我才能看到Zipkin中的错误。但是,我们需要自定义异常处理,以标准方式格式化错误响应,并在所有PaaS服务中使用错误代码。有没有办法做到这一点?我应该使用任何其他Sleuth对象来实现这一目标吗?