필터로 로깅을 할 경우 알아야할 핵심은 Body를 여러번 읽을 수 없다는 것
HttpServletRequest의 getReader() 또는 getInputStream() 메서드를 호출하여 body를 읽는 경우 다음 단계에서는 body가 비어있는 상태가 된다.
이는 서블릿 구조상 생기는 문제로 서블릿은 요청, 응답 객체를 단 한번만 읽을 수 있도록 설계되어있기 때문.
HttpServletRequest의 최상위 인터페이스를 따라가보면 ServletRequest인데, 드래그한 주석을 읽어보자.
한번 읽히면 IllegalStateException 발생. request의 body를 두번 읽은 순 없다.

이에 관해 해결방법이 두가지 있는데 HttpServletRequestWrapper, ContentCachingRequestWrapper
밑에 북마크는 래퍼 클래스를 커스텀하게 만들어서 사용하게 되면 발생하는 GET 요청의 문제점과 해결방안에 대해서 설명돼있음
Spring Interceptor(혹은 Servlet Filter)에서 POST 방식으로 전달된 JSON 데이터 처리하기 : NHN Cloud Meetup
ContentCachingResponseWrapper httpServletResponse =
new ContentCachingResponseWrapper((HttpServletResponse) response);
chain.doFilter(httpServletRequest, httpServletResponse);
String resContent = new String(httpServletResponse.getContentAsByteArray());
httpServletResponse.copyBodyToResponse();