diff --git a/spring-web/src/main/java/org/springframework/web/filter/AbstractRequestLoggingFilter.java b/spring-web/src/main/java/org/springframework/web/filter/AbstractRequestLoggingFilter.java index 57f33a48d91..7b4369d9dfa 100644 --- a/spring-web/src/main/java/org/springframework/web/filter/AbstractRequestLoggingFilter.java +++ b/spring-web/src/main/java/org/springframework/web/filter/AbstractRequestLoggingFilter.java @@ -306,21 +306,9 @@ public abstract class AbstractRequestLoggingFilter extends OncePerRequestFilter } if (isIncludePayload()) { - ContentCachingRequestWrapper wrapper = - WebUtils.getNativeRequest(request, ContentCachingRequestWrapper.class); - if (wrapper != null) { - byte[] buf = wrapper.getContentAsByteArray(); - if (buf.length > 0) { - int length = Math.min(buf.length, getMaxPayloadLength()); - String payload; - try { - payload = new String(buf, 0, length, wrapper.getCharacterEncoding()); - } - catch (UnsupportedEncodingException ex) { - payload = "[unknown]"; - } - msg.append(";payload=").append(payload); - } + String payload = getMessagePayload(request); + if (payload != null) { + msg.append(";payload=").append(payload); } } @@ -328,6 +316,29 @@ public abstract class AbstractRequestLoggingFilter extends OncePerRequestFilter return msg.toString(); } + /** + * Extract the message payload.
Used by {@link #createMessage(HttpServletRequest, String, String)} in creating the payload portion of the message (only if {@link #isIncludePayload()} returns true) + */ + protected String getMessagePayload(HttpServletRequest request) { + ContentCachingRequestWrapper wrapper = + WebUtils.getNativeRequest(request, ContentCachingRequestWrapper.class); + String payload = null; + if (wrapper != null) { + byte[] buf = wrapper.getContentAsByteArray(); + if (buf.length > 0) { + int length = Math.min(buf.length, getMaxPayloadLength()); + try { + payload = new String(buf, 0, length, wrapper.getCharacterEncoding()); + } + catch (UnsupportedEncodingException ex) { + payload = "[unknown]"; + } + + } + } + return payload; + } + /** * Determine whether to call the {@link #beforeRequest}/{@link #afterRequest}