diff --git a/src/main/java/capstone/restaurant/filter/HttpRequestWrapperFilter.java b/src/main/java/capstone/restaurant/filter/HttpRequestWrapperFilter.java new file mode 100644 index 0000000..370d7fe --- /dev/null +++ b/src/main/java/capstone/restaurant/filter/HttpRequestWrapperFilter.java @@ -0,0 +1,22 @@ +package capstone.restaurant.filter; + +import jakarta.servlet.*; +import jakarta.servlet.http.HttpServletRequest; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; +import org.springframework.web.util.ContentCachingRequestWrapper; + +import java.io.IOException; + +@Slf4j +@Component +public class HttpRequestWrapperFilter implements Filter { + + @Override + public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { + ContentCachingRequestWrapper httpRequest = new ContentCachingRequestWrapper((HttpServletRequest) servletRequest); + filterChain.doFilter(httpRequest , servletResponse); + } +} + + diff --git a/src/main/java/capstone/restaurant/interceptor/LoggerInterceptor.java b/src/main/java/capstone/restaurant/interceptor/LoggerInterceptor.java index e2c58f7..6d333c9 100644 --- a/src/main/java/capstone/restaurant/interceptor/LoggerInterceptor.java +++ b/src/main/java/capstone/restaurant/interceptor/LoggerInterceptor.java @@ -1,29 +1,33 @@ package capstone.restaurant.interceptor; +import jakarta.servlet.ServletInputStream; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.servlet.DispatcherServlet; import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.util.ContentCachingRequestWrapper; + +import java.util.stream.Stream; @Slf4j @Component public class LoggerInterceptor implements HandlerInterceptor { @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { - log.info("URL : {} , method : {} , body : {}" , request.getRequestURL() , request.getMethod()); - return true; - } + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler , Exception ex) throws Exception { - @Override - public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { - if(ex != null){ - log.error("에러 발생"); + ContentCachingRequestWrapper requestInfo = (ContentCachingRequestWrapper) request; + String requestBody = requestInfo.getContentAsString(); + + if(200 <= response.getStatus() && response.getStatus() < 300){ + log.info("url = {} , method = {} , body = {}" , request.getRequestURL() , request.getMethod() , requestBody); }else{ - log.info("에러 없음"); + log.error("url = {} , method = {} , status = {} , body = {}" , request.getRequestURL() , request.getMethod() , response.getStatus() , requestBody); } } } +