2016-12-24 3 views
2

json 형식으로 들어오는 요청을 모두 기록하고 싶습니다. Spring @RestController 및 @RequestBody 주석을 사용하여 들어오는 json 콘텐츠를 Java 객체에 바인딩합니다. 그러나 이러한 요청을 로거 파일에 기록하려고합니다. objectmapper 및 jacksonbinding을 검색했습니다.restcontroller가있는 편안한 웹 서비스에서 수신 json 요청을 로그하는 방법은 무엇입니까?

@RestController 
public class restClassName{ 

@RequestMapping(value={"/uri"}) 
public ObjectResponse functionRestName(@RequestBody ObjectRequest or){ 
    String jsonInString = mapper.writeValueAsString(staff);//Redundant stuff as the request json is already read by MappingJackson2HttpMessageConverter 
    logger.info("request::"+jsonInString) 
    return instance; 
} 
} 

하지만이 doing.Since MappingJackson2HttpMessageConverter의 rendundant 방법이 될 것으로 보인다 이미 단지 MappingJackson2HttpMessageConverter 자바 객체에 대한 요청 JSON 변환하기 전에 JSON을 로그인해야 object.I 자바에 JSON 요청을 변환 할 수있는 HttpRequest를 읽습니다.

답변

5

가장 간단한 방법은 아래의 의사 코드에 설명 된대로 CommonsRequestLoggingFilter을 사용하는 것입니다.

@Bean 
public CommonsRequestLoggingFilter requestLoggingFilter() { 
    CommonsRequestLoggingFilter crlf = new CommonsRequestLoggingFilter(); 
    crlf.setIncludeClientInfo(true); 
    crlf.setIncludeQueryString(true); 
    crlf.setIncludePayload(true); 
    return crlf; 
} 

그런 다음 application.properties 파일에 다음 줄을 추가하십시오.

logging.level.org.springframework.web.filter.CommonsRequestLoggingFilter=DEBUG 

이 모든 요청을 기록합니다 더 많은 사용자 정의에 CommonsRequestLoggingFilter api doc에 대한 링크를 클릭하십시오.