按照给定的例子,播放2.4.1注入记录过滤器

时间:2015-06-25 08:23:28

标签: scala playframework playframework-2.0

我尝试使用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

但是我得到以下错误:

Error

Path in IntelliJ

我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

您正在尝试在object中注入FiltersConfiguaration。让RequestLoggingFilter成为class可以解决您的问题。