在Spring Boot中使用CommonsRequestLoggingFilter記錄傳入的請求

banq發表於2021-07-11

Spring框架帶有一個開箱即用的功能:可以記錄您的請求,我們只需要配置它,即可隨時可用。Spring 自帶 AbstractRequestLoggingFilter,在處理請求之前和之後執行日誌記錄操作。
在我們進入實現細節之前,這個過濾器需要一個子類來覆蓋beforeRequest(HttpServletRequest, String)和afterRequest(HttpServletRequest, String)方法來執行圍繞請求的實際日誌記錄。
Spring 提供了以下 2 個實現 AbstractRequestLoggingFilter
  1. CommonsRequestLoggingFilter
  2. ServletContextRequestLoggingFilter

ServletContextRequestLoggingFilter 將請求 URI(以及可選的查詢字串)寫入日誌的簡單請求日誌過濾器ServletContext。我們將CommonsRequestLoggingFilter在這篇文章中討論。
Spring Boot 是建立和執行由 Spring 驅動的應用程式的新方法,我們CommonsRequestLoggingFilter只需將其註冊為應用程式的 bean即可啟用。

@Bean
public CommonsRequestLoggingFilter requestLoggingFilter() {
    CommonsRequestLoggingFilter loggingFilter = new CommonsRequestLoggingFilter();
    loggingFilter.setIncludeClientInfo(true);
    loggingFilter.setIncludeQueryString(true);
    loggingFilter.setIncludePayload(true);
    loggingFilter.setIncludeHeaders(false);
    return loggingFilter;
}

除了上面的配置,我們還需要確保透過application.properties或 透過CommonsRequestLoggingFilter將日誌級別設定為DEBUG

logging.level.org.springframework.web.filter.CommonsRequestLoggingFilter=DEBUG

一旦這些配置就位,您應該能夠在控制檯中看到類似的輸出:

2017-10-25 19:52:02.708 DEBUG 70034 --- [io-10070-exec-4] o.s.w.f.CommonsRequestLoggingFilter      : Before request [uri=/demo/greeting;client=0:0:0:0:0:0:0:1]
2017-10-25 19:52:02.791 DEBUG 70034 --- [io-10070-exec-4] o.s.w.f.CommonsRequestLoggingFilter      : After request [uri=/demo/greeting;client=0:0:0:0:0:0:0:1]

 

相關文章