玩 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
应该可以解决您的问题。
我尝试使用 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
应该可以解决您的问题。