Skip to content

Instantly share code, notes, and snippets.

@stdmitry
Last active April 23, 2022 17:21
Show Gist options
  • Save stdmitry/04abb2d227f955a3a3357df74ee76894 to your computer and use it in GitHub Desktop.
Save stdmitry/04abb2d227f955a3a3357df74ee76894 to your computer and use it in GitHub Desktop.
Java logging request id filter
public class RequestIdFilter implements OrderedWebFilter {
@Override
public int getOrder() {
return REQUEST_WRAPPER_FILTER_MAX_ORDER - 10;
}
@Override
@NonNull
public Mono<Void> filter(@NonNull ServerWebExchange ex, @NonNull WebFilterChain chain) {
return
chain.filter(ex)
.contextWrite(saveRequestId(ex.getRequest()))
;
}
private Function<Context,Context> saveRequestId(final ServerHttpRequest request) {
final var requestId =
Optional.ofNullable(request.getHeaders().getFirst("X-Request-Id"))
.orElseGet(() -> UUID.randomUUID().toString());
return context -> context.put("requestId", requestId);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment