From 30e40210a8d798246963c826fcbe4c0bce6a5c01 Mon Sep 17 00:00:00 2001 From: Jeff Nelson Date: Wed, 29 Nov 2017 17:04:29 -0600 Subject: [PATCH 1/2] Extract protected method in AbstractRequestLoggingFilter Issue: SPR-16245 --- .../filter/AbstractRequestLoggingFilter.java | 41 ++++++++++++------- 1 file changed, 26 insertions(+), 15 deletions(-) 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} From 018469286db92135d82aab8c5a5b6f64ec0a2be7 Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Tue, 9 Jan 2018 16:37:52 -0500 Subject: [PATCH 2/2] Polish --- .../web/filter/AbstractRequestLoggingFilter.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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 7b4369d9dfa..77ac9189404 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 @@ -25,6 +25,7 @@ import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.http.server.ServletServerHttpRequest; +import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.StringUtils; import org.springframework.web.util.ContentCachingRequestWrapper; @@ -317,8 +318,12 @@ public abstract class AbstractRequestLoggingFilter extends OncePerRequestFilter } /** - * 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) + * Extracts the message payload portion of the message created by + * {@link #createMessage(HttpServletRequest, String, String)} when + * {@link #isIncludePayload()} returns true. + * @since 5.0.3 */ + @Nullable protected String getMessagePayload(HttpServletRequest request) { ContentCachingRequestWrapper wrapper = WebUtils.getNativeRequest(request, ContentCachingRequestWrapper.class); @@ -333,7 +338,6 @@ public abstract class AbstractRequestLoggingFilter extends OncePerRequestFilter catch (UnsupportedEncodingException ex) { payload = "[unknown]"; } - } } return payload;