From 0ed008ab290074eae0f11fa0149a736e8abd7064 Mon Sep 17 00:00:00 2001 From: vlad Date: Sat, 1 Apr 2017 03:51:29 -0700 Subject: More logging --- src/main/scala/xyz/driver/core/app.scala | 42 +++++++++++++++----------- src/main/scala/xyz/driver/core/execution.scala | 10 +++--- src/main/scala/xyz/driver/core/rest.scala | 3 +- 3 files changed, 32 insertions(+), 23 deletions(-) (limited to 'src/main/scala/xyz/driver') diff --git a/src/main/scala/xyz/driver/core/app.scala b/src/main/scala/xyz/driver/core/app.scala index 4b81897..361fb74 100644 --- a/src/main/scala/xyz/driver/core/app.scala +++ b/src/main/scala/xyz/driver/core/app.scala @@ -67,24 +67,32 @@ object app { val versionRt = versionRoute(version, gitHash, time.currentTime()) val _ = Future { - http.bindAndHandle(route2HandlerFlow({ ctx => - val trackingId = rest.extractTrackingId(ctx.request) - MDC.put("trackingId", trackingId) - - def requestLogging: Future[Unit] = Future { - log.audit(s"""Received request {"method":"${ctx.request.method.value}","url": "${ctx.request.uri}"}""") + http.bindAndHandle(route2HandlerFlow(extractHost { origin => + extractClientIP { + ip => + { ctx => + val trackingId = rest.extractTrackingId(ctx.request) + MDC.put("trackingId", trackingId) + MDC.put("origin", origin) + MDC.put("ip", ip.toOption.map(_.getHostAddress).getOrElse("unknown")) + + def requestLogging: Future[Unit] = Future { + log.audit( + s"""Received request {"method":"${ctx.request.method.value}","url": "${ctx.request.uri}"}""") + } + + val contextWithTrackingId = + ctx.withRequest(ctx.request.addHeader(RawHeader(ContextHeaders.TrackingIdHeader, trackingId))) + + handleExceptions(ExceptionHandler(exceptionHandler))({ c => + requestLogging.flatMap { _ => + respondWithHeaders(List(RawHeader(ContextHeaders.TrackingIdHeader, trackingId))) { + modules.map(_.route).foldLeft(versionRt ~ healthRoute ~ swaggerRoutes)(_ ~ _) + }(c) + } + })(contextWithTrackingId) + } } - - val contextWithTrackingId = - ctx.withRequest(ctx.request.addHeader(RawHeader(ContextHeaders.TrackingIdHeader, trackingId))) - - handleExceptions(ExceptionHandler(exceptionHandler))({ c => - requestLogging.flatMap { _ => - respondWithHeaders(List(RawHeader(ContextHeaders.TrackingIdHeader, trackingId))) { - modules.map(_.route).foldLeft(versionRt ~ healthRoute ~ swaggerRoutes)(_ ~ _) - }(c) - } - })(contextWithTrackingId) }), interface, port)(materializer) } } diff --git a/src/main/scala/xyz/driver/core/execution.scala b/src/main/scala/xyz/driver/core/execution.scala index f27b905..0cf92fd 100644 --- a/src/main/scala/xyz/driver/core/execution.scala +++ b/src/main/scala/xyz/driver/core/execution.scala @@ -26,13 +26,13 @@ object execution { andEffect(effect.run) } - def illegalState[T](message: String) = - failure(new IllegalStateException(message)) + def illegalState[T](message: String): OptionT[Future, T] = + failure[T](new IllegalStateException(message)) - def illegalArgument[T](message: String) = - failure(new IllegalArgumentException(message)) + def illegalArgument[T](message: String): OptionT[Future, T] = + failure[T](new IllegalArgumentException(message)) - def failure[T](throwable: Throwable) = + def failure[T](throwable: Throwable): OptionT[Future, T] = OptionT.optionT(Future.failed[Option[T]](throwable)) def collectOrNone[T, R](value: T)(f: PartialFunction[T, OptionT[Future, R]]): OptionT[Future, R] = diff --git a/src/main/scala/xyz/driver/core/rest.scala b/src/main/scala/xyz/driver/core/rest.scala index 39f2cab..dc18375 100644 --- a/src/main/scala/xyz/driver/core/rest.scala +++ b/src/main/scala/xyz/driver/core/rest.scala @@ -281,7 +281,8 @@ package rest { case Failure(t: Throwable) => val responseTime = time.currentTime() - log.error(s"Failed to receive response to ${request.method} ${request.uri}", t) + log.audit(s"Failed to receive response from ${request.method} ${request.uri}", t) + log.error(s"Failed to receive response from ${request.method} ${request.uri}", t) stats.recordStats(Seq("request", request.uri.toString, "fail"), TimeRange(requestTime, responseTime), 1) }(executionContext) -- cgit v1.2.3