2015-12-02 79 views
2

我在Scala中使用Play Framework 2.4。我想記錄每個傳入的請求(包括請求主體)。我該怎麼做呢?如何使用Play 2和Scala記錄請求正文?

編輯:擴大評論中的討論。

如果設置了過濾器,則可以訪問RequestHeader對象。

class LoggingFilter extends Filter { 

    def apply(nextFilter: RequestHeader => Future[Result]) 
      (requestHeader: RequestHeader): Future[Result] = { 
     [...] 
    } 
} 

人們也可以在GlobalSettings覆蓋onRequestReceived(request: RequestHeader)爲米哈爾指出。

但是爲了得到請求正文,從這裏可以做些什麼?

+0

老問題中記錄,但似乎也有一些相關的答案,[這裏](https://stackoverflow.com/questions/35834444/requestheader-doesn-例如,t-contain-the-request-body-play-framework-2-0-until-now)。 – wwkudu

回答

-1

在遊戲中你有一個包含onRequest方法的GlobalSettings類。

只要創建類通過GlobalSettings繼承和實現這個方法

+0

我沒有看到onRequest方法,但有一個onRequestReceived(request:RequestHeader)。問題是,我從這一點看不到如何訪問請求_body_,我在RequestHeader實例上找不到它。我以前試圖使用過濾器來做到這一點,他們也得到一個RequestHeader對象。我認爲這個想法是隻有請求頭可用在這一點上,我可能不得不等待請求正文流完成...我不明白如何做到這一點。 – larspars

+0

好吧來吧我明確地看到它在文檔中: https://www.playframework.com/documentation/2.4.x/api/java/index.html 看play.GlobalSettings –

+0

嗯,你說得對。我在看play.api.GlobalSettings,它顯然不同於play.GlobalSettings(它的確有一個onRequest())。謝謝,我會研究這個。 – larspars

相關問題