diff --git a/spring-web/src/main/java/org/springframework/http/observation/DefaultServerRequestObservationConvention.java b/spring-web/src/main/java/org/springframework/http/observation/DefaultServerRequestObservationConvention.java index d011705ae11..eba0a0e8b5f 100644 --- a/spring-web/src/main/java/org/springframework/http/observation/DefaultServerRequestObservationConvention.java +++ b/spring-web/src/main/java/org/springframework/http/observation/DefaultServerRequestObservationConvention.java @@ -76,6 +76,10 @@ public class DefaultServerRequestObservationConvention implements ServerRequestO @Override public String getContextualName(ServerRequestObservationContext context) { + if (context.getPathPattern() != null) { + return String.format("http %s %s", context.getCarrier().getMethod().toLowerCase(), + context.getPathPattern()); + } return "http " + context.getCarrier().getMethod().toLowerCase(); } diff --git a/spring-web/src/main/java/org/springframework/http/observation/reactive/DefaultServerRequestObservationConvention.java b/spring-web/src/main/java/org/springframework/http/observation/reactive/DefaultServerRequestObservationConvention.java index 9e3244c7d4c..55170a6b23c 100644 --- a/spring-web/src/main/java/org/springframework/http/observation/reactive/DefaultServerRequestObservationConvention.java +++ b/spring-web/src/main/java/org/springframework/http/observation/reactive/DefaultServerRequestObservationConvention.java @@ -79,6 +79,10 @@ public class DefaultServerRequestObservationConvention implements ServerRequestO @Override public String getContextualName(ServerRequestObservationContext context) { + if (context.getPathPattern() != null) { + return String.format("http %s %s", context.getCarrier().getMethod().name().toLowerCase(), + context.getPathPattern().toString()); + } return "http " + context.getCarrier().getMethod().name().toLowerCase(); } diff --git a/spring-web/src/test/java/org/springframework/http/observation/DefaultServerRequestObservationConventionTests.java b/spring-web/src/test/java/org/springframework/http/observation/DefaultServerRequestObservationConventionTests.java index 920c54e1d4a..9f7e61eb957 100644 --- a/spring-web/src/test/java/org/springframework/http/observation/DefaultServerRequestObservationConventionTests.java +++ b/spring-web/src/test/java/org/springframework/http/observation/DefaultServerRequestObservationConventionTests.java @@ -50,6 +50,12 @@ class DefaultServerRequestObservationConventionTests { assertThat(convention.getContextualName(this.context)).isEqualTo("http get"); } + @Test + void contextualNameShouldUsePathPatternWhenAvailable() { + this.context.setPathPattern("/test/{name}"); + assertThat(convention.getContextualName(this.context)).isEqualTo("http get /test/{name}"); + } + @Test void supportsOnlyHttpRequestsObservationContext() { assertThat(this.convention.supportsContext(this.context)).isTrue(); diff --git a/spring-web/src/test/java/org/springframework/http/observation/reactive/DefaultServerRequestObservationConventionTests.java b/spring-web/src/test/java/org/springframework/http/observation/reactive/DefaultServerRequestObservationConventionTests.java index 42afdf35c5d..37b47b56235 100644 --- a/spring-web/src/test/java/org/springframework/http/observation/reactive/DefaultServerRequestObservationConventionTests.java +++ b/spring-web/src/test/java/org/springframework/http/observation/reactive/DefaultServerRequestObservationConventionTests.java @@ -49,6 +49,14 @@ class DefaultServerRequestObservationConventionTests { assertThat(convention.getContextualName(context)).isEqualTo("http get"); } + @Test + void contextualNameShouldUsePathPatternWhenAvailable() { + ServerWebExchange exchange = MockServerWebExchange.from(MockServerHttpRequest.get("/test/resource")); + ServerRequestObservationContext context = new ServerRequestObservationContext(exchange); + context.setPathPattern(PathPatternParser.defaultInstance.parse("/test/{name}")); + assertThat(convention.getContextualName(context)).isEqualTo("http get /test/{name}"); + } + @Test void supportsOnlyHttpRequestsObservationContext() { ServerWebExchange exchange = MockServerWebExchange.from(MockServerHttpRequest.post("/test/resource"));