implicit def mapToContext()

in notificationworkerlambda/src/main/scala/com/gu/notifications/worker/utils/Logging.scala [18:39]


  implicit def mapToContext(c: Map[String, _]): LogstashMarker = appendEntries(c.asJava)

  private def log[A](prefix: String, logging: String => Unit): A => IO[Unit] = a => IO.delay(logging(s"$prefix: ${a.toString}"))
  private def logWithFields[A](fields: Instant => Map[String, _], prefix: String, logging: (LogstashMarker, String) => Unit): A => IO[PerformanceMetrics] = a => {
    val end = Instant.now
    IO.delay {
      val metricsField = fields(end)
      logging(metricsField, s"$prefix: ${a.toString}")
      PerformanceMetrics(
        notificationId = metricsField.get("notificationId").get.toString(),
        platform = metricsField.get("platform").get.toString(),
        notificationType = metricsField.get("type").get.toString(),
        functionProcessingRate = metricsField.get("worker.functionProcessingRate").get.asInstanceOf[Double],
        functionProcessingTime = metricsField.get("worker.functionProcessingTime").get.asInstanceOf[Long],
        notificationProcessingTime = metricsField.get("worker.notificationProcessingTime").get.asInstanceOf[Long],
        notificationProcessingStartTime = metricsField.get("worker.notificationProcessingStartTime.millis").get.asInstanceOf[Long],
        notificationProcessingEndTime = metricsField.get("worker.notificationProcessingEndTime.millis").get.asInstanceOf[Long],
        sqsMessageBatchSize = metricsField("sqsMessageBatchSize").asInstanceOf[Int],
        chunkTokenSize = metricsField("worker.chunkTokenSize").asInstanceOf[Int]
      )
    }
  }