2012-08-28 52 views
2

我正在創建自己的日誌過濾器,實現ContainerRequestFilterContainerResponseFilter。我只想在響應失敗的情況下打印請求實體,例如。響應狀態代碼爲404,500.ContainerRequest .getEntity在ContainerResponseFilter的過濾方法中爲空

但是,當我在ContainerResponseFilter()的過濾方法中執行request.getEntity()或request.getEntityInputStream() 時收到空字符串。

看起來球衣在資源層讀取它後會刪除內容。

回答

0

它需要從輸入流中讀取不可重置的實體(所涉及的基礎設施不保留其副本)。因此,由於輸入流是先前讀取的,因此在實現ContainerResponseFilter的類中調用request.getEntityInputStream()時應該沒有任何內容。 LoggingFilter爲你做的工作。但正如你所提到的,如果你想定製它,那麼你需要編寫一個類似於那個的實現,並添加代碼來自定義日誌記錄。