如何在Spring Restful WebService中使用@RestController记录传入的JSON请求?

3

我想记录所有以json格式发送的请求。我正在使用Spring @RestController和@RequestBody注释将传入的json内容绑定到Java对象中,但是我希望将这些请求记录到日志文件中。我已经搜索了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已经读取了http请求以将json请求转换为Java对象,因此我只需要在MappingJackson2HttpMessageConverter将请求json转换为Java对象之前记录json即可。

1个回答

7
最简单的方法是使用如下伪代码所述的 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文档以进行更多自定义。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接