|
|
|
@ -263,17 +263,7 @@ public abstract class AbstractErrorWebExceptionHandler implements ErrorWebExcept |
|
|
|
.flatMap((response) -> write(exchange, response)); |
|
|
|
.flatMap((response) -> write(exchange, response)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private boolean isDisconnectedClientError(Throwable ex) { |
|
|
|
protected void logError(ServerRequest request, ServerResponse response, Throwable throwable) { |
|
|
|
return DISCONNECTED_CLIENT_EXCEPTIONS.contains(ex.getClass().getSimpleName()) |
|
|
|
|
|
|
|
|| isDisconnectedClientErrorMessage(NestedExceptionUtils.getMostSpecificCause(ex).getMessage()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private boolean isDisconnectedClientErrorMessage(String message) { |
|
|
|
|
|
|
|
message = (message != null) ? message.toLowerCase() : ""; |
|
|
|
|
|
|
|
return (message.contains("broken pipe") || message.contains("connection reset by peer")); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void logError(ServerRequest request, ServerResponse response, Throwable throwable) { |
|
|
|
|
|
|
|
if (logger.isDebugEnabled()) { |
|
|
|
if (logger.isDebugEnabled()) { |
|
|
|
logger.debug(request.exchange().getLogPrefix() + formatError(throwable, request)); |
|
|
|
logger.debug(request.exchange().getLogPrefix() + formatError(throwable, request)); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -284,6 +274,16 @@ public abstract class AbstractErrorWebExceptionHandler implements ErrorWebExcept |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private boolean isDisconnectedClientError(Throwable ex) { |
|
|
|
|
|
|
|
return DISCONNECTED_CLIENT_EXCEPTIONS.contains(ex.getClass().getSimpleName()) |
|
|
|
|
|
|
|
|| isDisconnectedClientErrorMessage(NestedExceptionUtils.getMostSpecificCause(ex).getMessage()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private boolean isDisconnectedClientErrorMessage(String message) { |
|
|
|
|
|
|
|
message = (message != null) ? message.toLowerCase() : ""; |
|
|
|
|
|
|
|
return (message.contains("broken pipe") || message.contains("connection reset by peer")); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private String formatError(Throwable ex, ServerRequest request) { |
|
|
|
private String formatError(Throwable ex, ServerRequest request) { |
|
|
|
String reason = ex.getClass().getSimpleName() + ": " + ex.getMessage(); |
|
|
|
String reason = ex.getClass().getSimpleName() + ": " + ex.getMessage(); |
|
|
|
return "Resolved [" + reason + "] for HTTP " + request.methodName() + " " + request.path(); |
|
|
|
return "Resolved [" + reason + "] for HTTP " + request.methodName() + " " + request.path(); |
|
|
|
|