2015-12-02 65 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

相关问题