2017-06-27 86 views
1

我正在使用Spring Boot將請求/響應日誌記錄集成到REST服務中。如果有需求,我選擇了CommonsRequestLoggingFilter爲Spring提供:Java Spring Boot - 使用有效負載的日誌響應

@Bean 
public CommonsRequestLoggingFilter requestLoggingFilter() { 
    CommonsRequestLoggingFilter loggingFilter = new CommonsRequestLoggingFilter(); 
    loggingFilter.setIncludeClientInfo(false); 
    loggingFilter.setIncludeQueryString(true); 
    loggingFilter.setIncludePayload(true); 
    loggingFilter.setMaxPayloadLength(1024); 

    return loggingFilter; 
} 

而且在配置文件中:

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

對於反應變量,然而,似乎沒有對應的類?在Spring中是否有類似的方式記錄服務器響應?

編輯: Specically,我與上面的設置看到的是沒有在BeforeRequest:

2017-06-28 09:32:32.258 DEBUG 22872 --- [http-nio-8081-exec-2] o.s.w.f.CommonsRequestLoggingFilter  : Before request [uri=/someApp/someObject] 

請求負載爲AfterRequest:

2017-06-28 09:32:32.272 DEBUG 22872 --- [http-nio-8081-exec-2] o.s.w.f.CommonsRequestLoggingFilter  : 
After request [uri=/someApp/someResource;payload={ 
    "someObject": { 
        "lastName": "Doe", 
        "reference": "123456789" 
       } 
    } 
] 

和實際的反應是無處日誌中。

回答

2

CommonsRequestLoggingFilter是AbstractRequestLoggingFilter

的子類

AbstractRequestLoggingFilter是針對之前和請求被處理之後執行測井操作的過濾器基類。

所以CommonsRequestLoggingFilter已經能夠記錄響應。請參閱方法afterRequest

順便說一下,如果您需要監視器並管理您的應用,請考慮使用actuator。它有能力記錄請求\響應開箱即用。

+0

我明白了。任何指針讓這個正確激活?我目前看到有效負載記錄爲「AfterRequest」條目的請求,並且無法找到響應。 –

0

沒關係,

我最終實現我自己的過濾器,可以登錄反應,以及。基於GenericFilterBean,封裝HttpResponse和HttpRequest,以便流不會關閉。

我仍然很奇怪Spring提供了一個記錄請求的類,但不是響應...

+2

如果您還發布了您實施的LoggingFilter的代碼,這將非常有用。 –