Skip to content

Commit 39d5874

Browse files
committed
Use connection id in server log messages if possible
Issue: SPR-16966
1 parent 5cdc267 commit 39d5874

File tree

5 files changed

+47
-4
lines changed

5 files changed

+47
-4
lines changed

spring-web/src/main/java/org/springframework/http/server/reactive/AbstractServerHttpRequest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,4 +179,13 @@ public SslInfo getSslInfo() {
179179
*/
180180
public abstract <T> T getNativeRequest();
181181

182+
/**
183+
* Return an id for the underlying connection, if available.
184+
* @since 5.1
185+
*/
186+
@Nullable
187+
public String getConnectionId() {
188+
return null;
189+
}
190+
182191
}

spring-web/src/main/java/org/springframework/http/server/reactive/DefaultServerHttpRequestBuilder.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,9 @@ private static class MutatedServerHttpRequest extends AbstractServerHttpRequest
191191

192192
private final ServerHttpRequest originalRequest;
193193

194+
@Nullable
195+
private final String requestId;
196+
194197

195198
public MutatedServerHttpRequest(URI uri, @Nullable String contextPath,
196199
HttpHeaders headers, String methodValue, MultiValueMap<String, HttpCookie> cookies,
@@ -203,6 +206,8 @@ public MutatedServerHttpRequest(URI uri, @Nullable String contextPath,
203206
this.sslInfo = sslInfo != null ? sslInfo : originalRequest.getSslInfo();
204207
this.body = body;
205208
this.originalRequest = originalRequest;
209+
this.requestId = originalRequest instanceof AbstractServerHttpRequest ?
210+
((AbstractServerHttpRequest) originalRequest).getConnectionId() : null;
206211
}
207212

208213
@Override
@@ -237,6 +242,11 @@ public Flux<DataBuffer> getBody() {
237242
public <T> T getNativeRequest() {
238243
return (T) this.originalRequest;
239244
}
245+
246+
@Override
247+
public String getConnectionId() {
248+
return this.requestId;
249+
}
240250
}
241251

242252
}

spring-web/src/main/java/org/springframework/http/server/reactive/ReactorServerHttpRequest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,4 +174,10 @@ public <T> T getNativeRequest() {
174174
return (T) this.request;
175175
}
176176

177+
@Override
178+
public String getConnectionId() {
179+
return this.request instanceof Connection ?
180+
((Connection) this.request).channel().id().asShortText() : null;
181+
}
182+
177183
}

spring-web/src/main/java/org/springframework/http/server/reactive/UndertowServerHttpRequest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import org.springframework.util.Assert;
4545
import org.springframework.util.LinkedMultiValueMap;
4646
import org.springframework.util.MultiValueMap;
47+
import org.springframework.util.ObjectUtils;
4748
import org.springframework.util.StringUtils;
4849

4950
/**
@@ -59,6 +60,8 @@ class UndertowServerHttpRequest extends AbstractServerHttpRequest {
5960

6061
private final RequestBodyPublisher body;
6162

63+
private final String connectionId;
64+
6265

6366
public UndertowServerHttpRequest(HttpServerExchange exchange, DataBufferFactory bufferFactory)
6467
throws URISyntaxException {
@@ -67,6 +70,7 @@ public UndertowServerHttpRequest(HttpServerExchange exchange, DataBufferFactory
6770
this.exchange = exchange;
6871
this.body = new RequestBodyPublisher(exchange, bufferFactory);
6972
this.body.registerListeners(exchange);
73+
this.connectionId = ObjectUtils.getIdentityHexString(this.exchange.getConnection());
7074
}
7175

7276
private static URI initUri(HttpServerExchange exchange) throws URISyntaxException {
@@ -127,6 +131,11 @@ public <T> T getNativeRequest() {
127131
return (T) this.exchange;
128132
}
129133

134+
@Override
135+
public String getConnectionId() {
136+
return this.connectionId;
137+
}
138+
130139

131140
private static class RequestBodyPublisher extends AbstractListenerReadPublisher<DataBuffer> {
132141

spring-web/src/main/java/org/springframework/web/server/adapter/HttpWebHandlerAdapter.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.springframework.http.HttpStatus;
3030
import org.springframework.http.codec.LoggingCodecSupport;
3131
import org.springframework.http.codec.ServerCodecConfigurer;
32+
import org.springframework.http.server.reactive.AbstractServerHttpRequest;
3233
import org.springframework.http.server.reactive.HttpHandler;
3334
import org.springframework.http.server.reactive.ServerHttpRequest;
3435
import org.springframework.http.server.reactive.ServerHttpResponse;
@@ -215,10 +216,7 @@ public void afterPropertiesSet() {
215216
public Mono<Void> handle(ServerHttpRequest request, ServerHttpResponse response) {
216217

217218
ServerWebExchange exchange = createExchange(request, response);
218-
219-
String logId = ObjectUtils.getIdentityHexString(request);
220-
exchange.getAttributes().put(ServerWebExchange.LOG_ID_ATTRIBUTE, logId);
221-
219+
exchange.getAttributes().put(ServerWebExchange.LOG_ID_ATTRIBUTE, initLogId(request));
222220
logExchange(exchange);
223221

224222
return getDelegate().handle(exchange)
@@ -232,6 +230,17 @@ protected ServerWebExchange createExchange(ServerHttpRequest request, ServerHttp
232230
getCodecConfigurer(), getLocaleContextResolver(), this.applicationContext);
233231
}
234232

233+
private String initLogId(ServerHttpRequest request) {
234+
String logId = null;
235+
if (request instanceof AbstractServerHttpRequest) {
236+
logId = ((AbstractServerHttpRequest) request).getConnectionId();
237+
}
238+
if (logId == null) {
239+
logId = ObjectUtils.getIdentityHexString(request);
240+
}
241+
return logId;
242+
}
243+
235244
private void logExchange(ServerWebExchange exchange) {
236245
if (logger.isDebugEnabled()) {
237246
String logPrefix = exchange.getLogPrefix();

0 commit comments

Comments
 (0)