@Override protected void doInAfterTrace(SpanEventRecorder recorder, Object target, Object[] args, Object result, Throwable throwable) { recorder.recordServiceType(RestTemplateConstants.SERVICE_TYPE); recorder.recordException(throwable); recorder.recordApi(methodDescriptor); if (args.length == 1 && args[0] instanceof AbstractClientHttpResponse) { AbstractClientHttpResponse response = (AbstractClientHttpResponse) args[0]; try { HttpStatus statusCode = response.getStatusCode(); if (statusCode != null) { recorder.recordAttribute(AnnotationKey.HTTP_STATUS_CODE, statusCode.value()); } } catch (IOException ioException) { logger.warn("Failed to after process. {}", ioException.getMessage(), ioException); } } }