Browse Source

Consistent logging of resolved exceptions

Issue: SPR-17178
pull/1935/head
Rossen Stoyanchev 8 years ago
parent
commit
a409233e80
  1. 10
      spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerExceptionResolver.java
  2. 17
      spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/support/DefaultHandlerExceptionResolver.java

10
spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerExceptionResolver.java

@ -128,12 +128,16 @@ public abstract class AbstractHandlerExceptionResolver implements HandlerExcepti @@ -128,12 +128,16 @@ public abstract class AbstractHandlerExceptionResolver implements HandlerExcepti
HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
if (shouldApplyTo(request, handler)) {
if (this.logger.isDebugEnabled()) {
this.logger.debug("Resolving exception from handler [" + handler + "]: " + ex);
}
prepareResponse(ex, response);
ModelAndView result = doResolveException(request, response, handler, ex);
if (result != null) {
// Print warn message, when warn logger is not enabled..
if (logger.isWarnEnabled() && (this.warnLogger == null || !this.warnLogger.isWarnEnabled())) {
logger.warn("Resolved [" + ex + "]" + (result.isEmpty() ? "" : " to " + result));
}
// warnLogger with full stack trace (requires explicit config)..
logException(ex, request);
}
return result;

17
spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/support/DefaultHandlerExceptionResolver.java

@ -218,7 +218,6 @@ public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionRes @@ -218,7 +218,6 @@ public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionRes
protected ModelAndView handleHttpRequestMethodNotSupported(HttpRequestMethodNotSupportedException ex,
HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException {
pageNotFoundLogger.warn(ex.getMessage());
String[] supportedMethods = ex.getSupportedMethods();
if (supportedMethods != null) {
response.setHeader("Allow", StringUtils.arrayToDelimitedString(supportedMethods, ", "));
@ -342,9 +341,6 @@ public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionRes @@ -342,9 +341,6 @@ public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionRes
protected ModelAndView handleConversionNotSupported(ConversionNotSupportedException ex,
HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException {
if (logger.isWarnEnabled()) {
logger.warn("Failed to convert request element: " + ex);
}
sendServerError(ex, request, response);
return new ModelAndView();
}
@ -363,9 +359,6 @@ public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionRes @@ -363,9 +359,6 @@ public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionRes
protected ModelAndView handleTypeMismatch(TypeMismatchException ex,
HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException {
if (logger.isWarnEnabled()) {
logger.warn("Failed to bind request element: " + ex);
}
response.sendError(HttpServletResponse.SC_BAD_REQUEST);
return new ModelAndView();
}
@ -386,9 +379,6 @@ public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionRes @@ -386,9 +379,6 @@ public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionRes
protected ModelAndView handleHttpMessageNotReadable(HttpMessageNotReadableException ex,
HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException {
if (logger.isWarnEnabled()) {
logger.warn("Failed to read HTTP message: " + ex);
}
response.sendError(HttpServletResponse.SC_BAD_REQUEST);
return new ModelAndView();
}
@ -410,9 +400,6 @@ public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionRes @@ -410,9 +400,6 @@ public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionRes
protected ModelAndView handleHttpMessageNotWritable(HttpMessageNotWritableException ex,
HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException {
if (logger.isWarnEnabled()) {
logger.warn("Failed to write HTTP message: " + ex);
}
sendServerError(ex, request, response);
return new ModelAndView();
}
@ -508,8 +495,8 @@ public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionRes @@ -508,8 +495,8 @@ public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionRes
if (!response.isCommitted()) {
response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE);
}
else if (logger.isDebugEnabled()) {
logger.debug("Async timeout for " + request.getMethod() + " [" + request.getRequestURI() + "]");
else {
logger.warn("Async request timed out");
}
return new ModelAndView();
}

Loading…
Cancel
Save