From b1ef6ece9f4f58c70ed8963c83126727c8408704 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Mon, 7 Dec 2015 12:47:38 +0100 Subject: [PATCH] AbstractRequestLoggingFilter unwraps request to find ContentCachingRequestWrapper Issue: SPR-13764 --- .../filter/AbstractRequestLoggingFilter.java | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 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 1234734175f..0fbdbe855f2 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 @@ -27,6 +27,7 @@ import javax.servlet.http.HttpSession; import org.springframework.util.Assert; import org.springframework.util.StringUtils; import org.springframework.web.util.ContentCachingRequestWrapper; +import org.springframework.web.util.WebUtils; /** * Base class for {@code Filter}s that perform logging operations before and after a request @@ -270,21 +271,23 @@ public abstract class AbstractRequestLoggingFilter extends OncePerRequestFilter msg.append(";user=").append(user); } } - if (isIncludePayload() && request instanceof ContentCachingRequestWrapper) { - ContentCachingRequestWrapper wrapper = (ContentCachingRequestWrapper) request; - 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()); + 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); } - catch (UnsupportedEncodingException e) { - payload = "[unknown]"; - } - msg.append(";payload=").append(payload); } - } msg.append(suffix); return msg.toString();