Установить идентификатор трассировки по запросу перед фильтром - PullRequest
2 голосов
/ 06 мая 2019

Здравствуйте. У меня есть один код WebFilter, который регистрирует запросы и ответы от моего приложения, но я хочу добавить идентификатор трассировки при первом обращении к приложению, но он не отображается:

Request:
2019-05-06 14:23:23.590 INFO [application,,,] 4151 --- [ctor-http-nio-3] c.m.m.shared.filters.RequestFilter : msg="Request to Application", path=/v1/car/1111", 

Response:
2019-05-06 14:23:28.196 INFO [application,f1dd6a9997339ht6,f1cc6ff0gg7969306,false] 4151 --- [ctor-http-nio-4] c.m.m.shared.filters.RequestFilter : msg="Response from Application", status_code="OK",

Каквы видите на моем ответе у меня есть идентификатор трассировки, но в запросе у меня нет.

Есть ли способ зарегистрировать запрос с идентификатором трассировки?

Вот мой код Iпопробуй реализовать.

@Component
@Order(TraceWebFilter.ORDER + 5)
class RequestFilter implements WebFilter {
    private Tracer tracer;

    private CustomLogger logger = new CustomLogger(RequestFilter.class);

    public RequestFilter(Tracer tracer) {
        this.tracer = tracer;
    }

    @Override
    public Mono<Void> filter(ServerWebExchange serverWebExchange, WebFilterChain webFilterChain) {

        Span currentSpan = this.tracer.currentSpan();
        if (currentSpan != null) {
            serverWebExchange.getRequest().getHeaders().add("TRACE-ID", currentSpan.context().traceIdString());
        }

        logger.info("Request to Application")
            .add("path", serverWebExchange.getRequest().getPath().pathWithinApplication().value())
            .add("headers", serverWebExchange.getRequest().getHeaders().toString())
            .log();

        serverWebExchange.getResponse().beforeCommit(() -> {
            Span currentSpan2 = this.tracer.currentSpan();
            if (currentSpan2 != null) {
                serverWebExchange.getResponse().getHeaders().add("TRACE-ID", currentSpan2.context().traceIdString());
            }
            logger.info("Response from Application").add("status_code", serverWebExchange.getResponse().getStatusCode()).log();
            return Mono.empty();
        });

        return webFilterChain.filter(serverWebExchange);
    }
}

Мой запрос:

Expected: 2019-05-06 14:23:28.196 INFO [application,f1dd6a9997339ht6,f1cc6ff0gg7969306,false] 4151

Actual: 2019-05-06 14:23:23.590 INFO [application,,,]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...