Andreas Neumann
Andreas Neumann

Reputation: 10904

Play 2.4.1 injecting Logging filter as in given example

I try to implement the LoggingFilter as in the example given on https://www.playframework.com/documentation/2.4.1/ScalaHttpFilters with Play 2.4.1 .

FilterConfiguration import javax.inject.Inject import play.api.http.HttpFilters

class FiltersConfiguaration @Inject()(loggingFilter:com.holidaycheck.filters.RequestLoggingFilter) extends  HttpFilters {
  val filters = Seq(loggingFilter)
}

Filter

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)

    }
  }
}

}

configuration I do as given in the explanation, also giving the filters in the application.conf.

play.http.filters = com.holidaycheck.filters.FiltersConfiguaration

But I get the following Error:

Error

Path in IntelliJ

What am I missing here ?

Upvotes: 2

Views: 834

Answers (1)

Roman
Roman

Reputation: 5699

You are trying to inject an object in your FiltersConfiguaration. Make RequestLoggingFilter a class should solve your problem.

Upvotes: 2

Related Questions