[英]How to log the incoming json request in spring restful webservice with restcontroller?
我想記錄所有傳入的請求,這些請求將是json格式。我使用spring @RestController和@RequestBody注釋將傳入的json內容綁定到java對象。但是我想將這些請求記錄到logger文件。我搜索過用於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。
實現它的最簡單方法是使用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的鏈接進行更多自定義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.