我尝试使用Common Log Format记录我的播放应用正在接收的每个请求。
除了体长,我可以在Filter中获得所有这些字段。
我注意到打电话给Play会返回Content-Length
,因为Play会在没有你告诉它的情况下自动计算出来(除非你用Chunked Responses等做一些时髦的事情)。
这会让我相信,在过滤器中,我可以简单地调用
next(rh).map{ response => log(response.header.headers.get("Content-Length")); response }
但这会返回None
!然而,当我卷曲任何电话时,我看到了标题。这意味着必须在Content-Length
之后设置Filter
,但在哪里?我如何/可以从Global.scala
访问它?如果没有,那么任何人都知道一种简单的方法获取此信息(以编程方式或其他方式)。
我正在使用Play 2.2.3
答案 0 :(得分:2)
回复内容长度在iteratee中设置,它将数据写回netty响应,在那里它选择是否应该设置内容长度或根据推送到iteratee的内容开始分组响应,因此实际上不计算您可以在过滤器中访问的任何位置。您可以在此处查看发生这种情况的来源: