我尝试使用Play 2.4.1在https://www.playframework.com/documentation/2.4.1/ScalaHttpFilters上给出的示例中实现 LoggingFilter 。
FilterConfiguration import javax.inject.Inject import play.api.http.HttpFilters
class FiltersConfiguaration @Inject()(loggingFilter:com.holidaycheck.filters.RequestLoggingFilter) extends HttpFilters {
val filters = Seq(loggingFilter)
}
过滤
import play.api.Logger
import play.api.mvc._
import play.api.libs.concurrent.Execution.Implicits.defaultContext
object RequestLoggingFilter extends EssentialFilter {
def apply(nextFilter: EssentialAction) = new EssentialAction {
def apply(requestHeader: RequestHeader) = {
val startTime = System.currentTimeMillis
nextFilter(requestHeader).map { result =>
val endTime = System.currentTimeMillis
val requestTime = endTime - startTime
Logger.info(s"${requestHeader.method} ${requestHeader.uri}" +
s" took ${requestTime}ms and returned ${result.header.status}")
result.withHeaders("Request-Time" -> requestTime.toString)
}
}
}
}
构造
我按照解释中的说明进行操作,同时在application.conf
。
play.http.filters = com.holidaycheck.filters.FiltersConfiguaration
但是我得到以下错误:
我在这里缺少什么?
答案 0 :(得分:2)
您正在尝试在object
中注入FiltersConfiguaration
。让RequestLoggingFilter
成为class
可以解决您的问题。