我想记录所有传入的请求,这些请求将是json格式。我使用spring @RestController和@RequestBody注释将传入的json内容绑定到java对象。但是我想将这些请求记录到logger文件.I我们一直在寻找objectmapper和jacksonbinding。
@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;
}
}
但这似乎是一种非常冗长的做法。由于MappingJackson2HttpMessageConverter已经读取了httprequest以将json请求转换为java对象。我只需要在MappingJackson2HttpMessageConverter将请求json转换为java对象之前记录json。
答案 0 :(得分:6)
实现它的最简单方法是使用@Bean
public CommonsRequestLoggingFilter requestLoggingFilter() {
CommonsRequestLoggingFilter crlf = new CommonsRequestLoggingFilter();
crlf.setIncludeClientInfo(true);
crlf.setIncludeQueryString(true);
crlf.setIncludePayload(true);
return crlf;
}
,如下面的伪代码所述。
logging.level.org.springframework.web.filter.CommonsRequestLoggingFilter=DEBUG
然后在application.properties文件中添加以下行。
gtest
这将记录所有请求,请点击CommonsRequestLoggingFilter api doc链接进行更多自定义。