Browse Source

AbstractRequestLoggingFilter unwraps request to find ContentCachingRequestWrapper

Issue: SPR-13764
pull/921/merge
Juergen Hoeller 10 years ago
parent
commit
b1ef6ece9f
  1. 11
      spring-web/src/main/java/org/springframework/web/filter/AbstractRequestLoggingFilter.java

11
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.Assert;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.util.ContentCachingRequestWrapper; 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 * Base class for {@code Filter}s that perform logging operations before and after a request
@ -270,8 +271,10 @@ public abstract class AbstractRequestLoggingFilter extends OncePerRequestFilter
msg.append(";user=").append(user); msg.append(";user=").append(user);
} }
} }
if (isIncludePayload() && request instanceof ContentCachingRequestWrapper) { if (isIncludePayload()) {
ContentCachingRequestWrapper wrapper = (ContentCachingRequestWrapper) request; ContentCachingRequestWrapper wrapper =
WebUtils.getNativeRequest(request, ContentCachingRequestWrapper.class);
if (wrapper != null) {
byte[] buf = wrapper.getContentAsByteArray(); byte[] buf = wrapper.getContentAsByteArray();
if (buf.length > 0) { if (buf.length > 0) {
int length = Math.min(buf.length, getMaxPayloadLength()); int length = Math.min(buf.length, getMaxPayloadLength());
@ -279,12 +282,12 @@ public abstract class AbstractRequestLoggingFilter extends OncePerRequestFilter
try { try {
payload = new String(buf, 0, length, wrapper.getCharacterEncoding()); payload = new String(buf, 0, length, wrapper.getCharacterEncoding());
} }
catch (UnsupportedEncodingException e) { catch (UnsupportedEncodingException ex) {
payload = "[unknown]"; payload = "[unknown]";
} }
msg.append(";payload=").append(payload); msg.append(";payload=").append(payload);
} }
}
} }
msg.append(suffix); msg.append(suffix);
return msg.toString(); return msg.toString();

Loading…
Cancel
Save