@@ -263,6 +263,25 @@ public Mono<Void> handle(ServerWebExchange exchange, Throwable throwable) {
263
263
.flatMap ((response ) -> write (exchange , response ));
264
264
}
265
265
266
+ private boolean isDisconnectedClientError (Throwable ex ) {
267
+ return DISCONNECTED_CLIENT_EXCEPTIONS .contains (ex .getClass ().getSimpleName ())
268
+ || isDisconnectedClientErrorMessage (NestedExceptionUtils .getMostSpecificCause (ex ).getMessage ());
269
+ }
270
+
271
+ private boolean isDisconnectedClientErrorMessage (String message ) {
272
+ message = (message != null ) ? message .toLowerCase () : "" ;
273
+ return (message .contains ("broken pipe" ) || message .contains ("connection reset by peer" ));
274
+ }
275
+
276
+ /**
277
+ * Logs the {@code throwable} error for the given {@code request} and {@code response}
278
+ * exchange. The default implementation logs all errors at debug level. Additionally,
279
+ * any internal server error (500) is logged at error level.
280
+ * @param request the request that was being handled
281
+ * @param response the response that was being sent
282
+ * @param throwable the error to be logged
283
+ * @since 2.2.0
284
+ */
266
285
protected void logError (ServerRequest request , ServerResponse response , Throwable throwable ) {
267
286
if (logger .isDebugEnabled ()) {
268
287
logger .debug (request .exchange ().getLogPrefix () + formatError (throwable , request ));
@@ -274,16 +293,6 @@ protected void logError(ServerRequest request, ServerResponse response, Throwabl
274
293
}
275
294
}
276
295
277
- private boolean isDisconnectedClientError (Throwable ex ) {
278
- return DISCONNECTED_CLIENT_EXCEPTIONS .contains (ex .getClass ().getSimpleName ())
279
- || isDisconnectedClientErrorMessage (NestedExceptionUtils .getMostSpecificCause (ex ).getMessage ());
280
- }
281
-
282
- private boolean isDisconnectedClientErrorMessage (String message ) {
283
- message = (message != null ) ? message .toLowerCase () : "" ;
284
- return (message .contains ("broken pipe" ) || message .contains ("connection reset by peer" ));
285
- }
286
-
287
296
private String formatError (Throwable ex , ServerRequest request ) {
288
297
String reason = ex .getClass ().getSimpleName () + ": " + ex .getMessage ();
289
298
return "Resolved [" + reason + "] for HTTP " + request .methodName () + " " + request .path ();
0 commit comments