|
27 | 27 | import org.springframework.util.Assert; |
28 | 28 | import org.springframework.util.StringUtils; |
29 | 29 | import org.springframework.web.util.ContentCachingRequestWrapper; |
| 30 | +import org.springframework.web.util.WebUtils; |
30 | 31 |
|
31 | 32 | /** |
32 | 33 | * Base class for {@code Filter}s that perform logging operations before and after a request |
@@ -270,21 +271,23 @@ protected String createMessage(HttpServletRequest request, String prefix, String |
270 | 271 | msg.append(";user=").append(user); |
271 | 272 | } |
272 | 273 | } |
273 | | - if (isIncludePayload() && request instanceof ContentCachingRequestWrapper) { |
274 | | - ContentCachingRequestWrapper wrapper = (ContentCachingRequestWrapper) request; |
275 | | - byte[] buf = wrapper.getContentAsByteArray(); |
276 | | - if (buf.length > 0) { |
277 | | - int length = Math.min(buf.length, getMaxPayloadLength()); |
278 | | - String payload; |
279 | | - try { |
280 | | - payload = new String(buf, 0, length, wrapper.getCharacterEncoding()); |
| 274 | + if (isIncludePayload()) { |
| 275 | + ContentCachingRequestWrapper wrapper = |
| 276 | + WebUtils.getNativeRequest(request, ContentCachingRequestWrapper.class); |
| 277 | + if (wrapper != null) { |
| 278 | + byte[] buf = wrapper.getContentAsByteArray(); |
| 279 | + if (buf.length > 0) { |
| 280 | + int length = Math.min(buf.length, getMaxPayloadLength()); |
| 281 | + String payload; |
| 282 | + try { |
| 283 | + payload = new String(buf, 0, length, wrapper.getCharacterEncoding()); |
| 284 | + } |
| 285 | + catch (UnsupportedEncodingException ex) { |
| 286 | + payload = "[unknown]"; |
| 287 | + } |
| 288 | + msg.append(";payload=").append(payload); |
281 | 289 | } |
282 | | - catch (UnsupportedEncodingException e) { |
283 | | - payload = "[unknown]"; |
284 | | - } |
285 | | - msg.append(";payload=").append(payload); |
286 | 290 | } |
287 | | - |
288 | 291 | } |
289 | 292 | msg.append(suffix); |
290 | 293 | return msg.toString(); |
|
0 commit comments