簡體   English   中英

如何使用restcontroller在spring restful webservice中記錄傳入的json請求?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM