Merge branch '2.0.x'
This commit is contained in:
commit
6a2cb883a5
|
@ -127,8 +127,11 @@ public class HttpExchangeTracer {
|
|||
|
||||
@Override
|
||||
public Map<String, List<String>> getHeaders() {
|
||||
return getHeadersIfIncluded(Include.REQUEST_HEADERS,
|
||||
this.delegate::getHeaders, this::includedHeader);
|
||||
Map<String, List<String>> headers = getHeadersIfIncluded(
|
||||
Include.REQUEST_HEADERS, this.delegate::getHeaders,
|
||||
this::includedHeader);
|
||||
postProcessRequestHeaders(headers);
|
||||
return headers;
|
||||
}
|
||||
|
||||
private boolean includedHeader(String name) {
|
||||
|
|
|
@ -29,6 +29,8 @@ import org.junit.Test;
|
|||
|
||||
import org.springframework.boot.actuate.trace.http.HttpTrace.Request;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.util.LinkedMultiValueMap;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.BDDMockito.given;
|
||||
|
@ -89,6 +91,19 @@ public class HttpExchangeTracerTests {
|
|||
assertThat(request.getHeaders()).containsOnlyKeys(HttpHeaders.ACCEPT);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void requestHeadersCanBeCustomized() {
|
||||
MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
|
||||
headers.add("to-remove", "test");
|
||||
headers.add("test", "value");
|
||||
HttpTrace trace = new RequestHeadersFilterHttpExchangeTracer()
|
||||
.receivedRequest(createRequest(headers));
|
||||
Request request = trace.getRequest();
|
||||
assertThat(request.getHeaders()).containsOnlyKeys("test", "to-add");
|
||||
assertThat(request.getHeaders().get("test")).containsExactly("value");
|
||||
assertThat(request.getHeaders().get("to-add")).containsExactly("42");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void authorizationHeaderIsNotIncludedByDefault() {
|
||||
HttpTrace trace = new HttpExchangeTracer(EnumSet.of(Include.REQUEST_HEADERS))
|
||||
|
@ -332,4 +347,19 @@ public class HttpExchangeTracerTests {
|
|||
return output.toString();
|
||||
}
|
||||
|
||||
private static class RequestHeadersFilterHttpExchangeTracer
|
||||
extends HttpExchangeTracer {
|
||||
|
||||
RequestHeadersFilterHttpExchangeTracer() {
|
||||
super(EnumSet.of(Include.REQUEST_HEADERS));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void postProcessRequestHeaders(Map<String, List<String>> headers) {
|
||||
headers.remove("to-remove");
|
||||
headers.putIfAbsent("to-add", Collections.singletonList("42"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1988,7 +1988,8 @@ endpoint and obtain basic information about the last 100 request-response exchan
|
|||
[[production-ready-http-tracing-custom]]
|
||||
=== Custom HTTP tracing
|
||||
To customize the items that are included in each trace, use the
|
||||
`management.trace.http.include` configuration property.
|
||||
`management.trace.http.include` configuration property. For advanced customization,
|
||||
consider registering your own `HttpExchangeTracer` implementation.
|
||||
|
||||
By default, an `InMemoryHttpTraceRepository` that stores traces for the last 100
|
||||
request-response exchanges is used. If you need to expand the capacity, you can define
|
||||
|
|
Loading…
Reference in New Issue