def apply()

in app/lib/LoggingFilter.scala [12:42]


  def apply(nextFilter: (RequestHeader) => Future[Result])(requestHeader: RequestHeader): Future[Result] = {
    val ec = scala.concurrent.ExecutionContext.Implicits.global

    val startTime = System.currentTimeMillis

    val loggingContextMarkers = requestHeader.headers.getAll(LoggingContext.LOGGING_CONTEXT_HEADER)
      .flatMap(LoggingContext.fromHeader)
      .toMap
    val pandaHmacServiceNameMarkers =
      requestHeader.headers.get(HMACHeaderNames.serviceNameKey).map(HMACHeaderNames.serviceNameKey -> _).toMap

    LoggingContext.withContext(loggingContextMarkers ++ pandaHmacServiceNameMarkers) {
      LoggingContext.withMDCExecutionContext(ec) { implicit ec =>
        // use an new implicit execution context that will stash the
        // current MDC, and then apply to all threads that are
        // associated with this request

        nextFilter(requestHeader).map { result =>
          val endTime = System.currentTimeMillis
          val requestTime = endTime - startTime

          logger.info(
            s"(${result.header.status}) ${requestHeader.method} ${requestHeader.uri} " +
              s"took ${requestTime}ms"
          )

          result
        }
      }
    }
  }