Как заполнить Spring Cloud Sleuth Trace ID в поле logRef в VndError в Spring-Hateoas? - PullRequest
0 голосов
/ 29 мая 2018

У меня есть @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

1 Ответ

0 голосов
/ 31 мая 2018

В документации мы описали, как получить доступ к контексту трассировки.Чтобы получить идентификатор трассировки через интерфейс трассировщика.

...