我們使用 SpringBoot 框架和 RestControllers 開發了一個 Rest Api 后端。現在,我們必須生成一個日志(在發送回應之前),其中包含:請求頭 - 請求正文 - 回應頭 - 回應正文
尋找答案時,我們找到了一些示例(使用過濾器或 AOP),但所有這些都會生成一個請求日志和另一個回應日志。
可以生成單個日志嗎?如何?
謝謝!
uj5u.com熱心網友回復:
您可以通過實作過濾器來實作。您可以在鏈處理后覆寫 doFilter 方法和日志。下面的示例代碼。
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
ContentCachingRequestWrapper requestWrapper = new ContentCachingRequestWrapper((HttpServletRequest) request);
ContentCachingResponseWrapper responseWrapper =new ContentCachingResponseWrapper((HttpServletResponse) response);
try {
chain.doFilter(requestWrapper, responseWrapper);
} finally {
String requestBody=new String(requestWrapper.getContentAsByteArray(),requestWrapper.getCharacterEncoding());
String responseBody=new String(responseWrapper.getContentAsByteArray(),responseWrapper.getCharacterEncoding());
int statusCode = responseWrapper.getStatus();
final String ip = requestWrapper.getRemoteAddr();
final String requestUrl = requestWrapper.getRequestURL().toString();
final String clientId = requestWrapper.getHeader("any-header");
responseWrapper.copyBodyToResponse();
// todo : here you can log any information which can extracted from request and response wrapper.
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/397762.html
