2016-12-24 91 views
2

我想记录所有将以json格式的传入请求。我使用spring @RestController和@RequestBody注释将传入的json内容绑定到java对象。但我想将这些请求记录到记录器文件中。我有搜索周围的objectmapper和jacksonbinding。如何使用restcontroller在spring restful webservice中记录传入的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方式已经读取的HttpRequest以JSON请求转换成Java object.I只需登录该JSON MappingJackson2HttpMessageConverter将请求转换成JSON到Java对象之前。

回答

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以获取更多定制信息。

相关问题