[SPRING] RESTful 게시물 데이터를 어떻게 기록합니까?
SPRINGRESTful 게시물 데이터를 어떻게 기록합니까?
Spring MVC를 통해 노출 된 REST 서비스가있다. HandlerExceptionResolver를 사용하여 예외를 기록합니다. 우리는 현재 다음을 기록합니다 :
JSON 게시 데이터도 기록 할 수 있다면 디버깅이 쉬워집니다. 이것을 얻는 방법에 대한 제안?
해결법
-
==============================
1.요청 본문을 읽을 때 저장하고 나중에 저장된 로그를 예외 로거에 제공하는 필터가 필요합니다.
요청 본문을 읽을 때 저장하고 나중에 저장된 로그를 예외 로거에 제공하는 필터가 필요합니다.
Spring은 비슷한 일을하는 AbstractRequestLoggingFilter를 포함한다. 자신의 문제에 직접적으로 적합하지는 않지만 직접 필터를 구현하기 위해 참조로 사용할 수 있습니다.
-
==============================
2.응용 프로그램의 구성을 나타내는 클래스에 다음을 추가합니다.
응용 프로그램의 구성을 나타내는 클래스에 다음을 추가합니다.
import javax.servlet.Filter; import javax.servlet.http.HttpServletRequest; import org.springframework.web.filter.AbstractRequestLoggingFilter;
....
@Bean public Filter loggingFilter(){ AbstractRequestLoggingFilter f = new AbstractRequestLoggingFilter() { @Override protected void beforeRequest(HttpServletRequest request, String message) { System.out.println("beforeRequest: " +message); } @Override protected void afterRequest(HttpServletRequest request, String message) { System.out.println("afterRequest: " +message); } }; f.setIncludeClientInfo(true); f.setIncludePayload(true); f.setIncludeQueryString(true); f.setBeforeMessagePrefix("BEFORE REQUEST ["); f.setAfterMessagePrefix("AFTER REQUEST ["); f.setAfterMessageSuffix("]\n"); return f; }
당신은 코멘트를 써야 할 수도 있습니다.
f.setIncludePayload(true);
-
==============================
3.요청 / 응답의 페이로드를 쉽게 기록 할 수있는 방법은 없습니다. 자바 웹 필터를 사용하여 모든 요청과 응답을 차단하고 스트림에서 JSON 데이터를 읽을 수 있습니다. 그러나 한 가지 문제가 있습니다. 스트림에서 데이터를 읽을 때 실제 데이터가 스트림에서 고갈됩니다.
요청 / 응답의 페이로드를 쉽게 기록 할 수있는 방법은 없습니다. 자바 웹 필터를 사용하여 모든 요청과 응답을 차단하고 스트림에서 JSON 데이터를 읽을 수 있습니다. 그러나 한 가지 문제가 있습니다. 스트림에서 데이터를 읽을 때 실제 데이터가 스트림에서 고갈됩니다.
따라서 실제 요청 및 응답 객체의 래퍼를 구현해야합니다. 요청 된 응답의 복사 된 버전 만 로깅됩니다. 우리는 다음과 같은 유사한 솔루션을 구현했으며 요구 사항을 만족 시켰습니다.
http://www.wetfeetblog.com/servlet-filer-to-log-request-and-response-details-and-payload/431
http://angelborroy.wordpress.com/2009/03/04/dump-request-and-response-using-javaxservletfilter/
from https://stackoverflow.com/questions/12371168/how-can-i-log-restful-post-data by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] @Transactional 주석이있는 Spring OpenSessionInViewFilter (0) | 2019.03.20 |
---|---|
[SPRING] POM에서 응용 프로그램 버전 가져 오기 (0) | 2019.03.20 |
[SPRING] 도트를위한 JsonPath JUnit 이스케이프 문자 (0) | 2019.03.20 |
[SPRING] Annotation을 통해 Spring Bean의 File 필드 채우기 (0) | 2019.03.20 |
[SPRING] 스프링 부트 : @Value 또는 @ConfigurationProperties를 사용하여 yaml에서 목록 읽기 (0) | 2019.03.20 |