У меня есть @ControllerAdvice
, который возвращает VndError
из весенних гатеев.VndError
указывает поле logRef
, в которое я должен поместить идентификатор трассировки из Spring Cloud Sleuth.Есть ли официальный способ сделать это, или я должен просто извлечь его из MDC прямо в моем @ControllerAdvice
@ExceptionHandler
методе?
Пример Рекомендации для контроллера:
@ControllerAdvice
class ExceptionHandler {
@Autowired
private lateinit var tracer: Tracer
@ExceptionHandler(LocalException::class)
fun handleLocalException(e: LocalException): ResponseEntity<VndErrors.VndError> {
val traceId = MDC.get("X-B3-TraceId") // <-- Is this the correct way of getting trace id from Sleuth?
val traceId2 = tracer.currentSpan().context().traceIdString() // <-- Or something like this?
val error = VndErrors.VndError(traceId, e.message)
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(error)
}
}
Пример GitHub: https://github.com/hughwphamill/spring-traceid-logref