玩 2.4.1 在给定的例子中注入日志过滤器

Play 2.4.1 injecting Logging filter as in given example

我尝试使用 Play 2.4.1 实现 LoggingFilter,如 https://www.playframework.com/documentation/2.4.1/ScalaHttpFilters 中给出的示例。

过滤器配置 进口 javax.inject.Inject 导入 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

但我收到以下错误:

我在这里错过了什么?

您正试图在 FiltersConfiguaration 中注入 object。将 RequestLoggingFilter 设为 class 应该可以解决您的问题。