diff options
author | Ivan Topolnjak <ivantopo@gmail.com> | 2014-08-13 20:41:30 -0400 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2014-08-13 20:41:30 -0400 |
commit | 653ceaa3de4944c7c4788577c61ce8597ce9a8ae (patch) | |
tree | b580e2aca6dd8b68004893b66e49305e950bc1c4 /kamon-play | |
parent | f774c4736545e1584f74b87c0a7d74d2ba6a07aa (diff) | |
parent | 79ccffe3fff870d8a9338576eff6caad7ed69992 (diff) | |
download | Kamon-653ceaa3de4944c7c4788577c61ce8597ce9a8ae.tar.gz Kamon-653ceaa3de4944c7c4788577c61ce8597ce9a8ae.tar.bz2 Kamon-653ceaa3de4944c7c4788577c61ce8597ce9a8ae.zip |
Merge branch 'master' into release-0.2
Conflicts:
kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala
version.sbt
Diffstat (limited to 'kamon-play')
-rw-r--r-- | kamon-play/src/main/scala/kamon/play/Play.scala | 6 | ||||
-rw-r--r-- | kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala | 27 |
2 files changed, 14 insertions, 19 deletions
diff --git a/kamon-play/src/main/scala/kamon/play/Play.scala b/kamon-play/src/main/scala/kamon/play/Play.scala index 03436458..7b8777e0 100644 --- a/kamon-play/src/main/scala/kamon/play/Play.scala +++ b/kamon-play/src/main/scala/kamon/play/Play.scala @@ -16,7 +16,8 @@ package kamon.play -import akka.actor.{ ExtendedActorSystem, Extension, ExtensionIdProvider, ExtensionId } +import akka.actor.{ ExtendedActorSystem, Extension, ExtensionId, ExtensionIdProvider } +import akka.event.Logging import kamon.Kamon import kamon.http.HttpServerMetrics import kamon.metric.Metrics @@ -27,7 +28,8 @@ object Play extends ExtensionId[PlayExtension] with ExtensionIdProvider { } class PlayExtension(private val system: ExtendedActorSystem) extends Kamon.Extension { - publishInfoMessage(system, "Play Extension Loaded!!") + val log = Logging(system, classOf[PlayExtension]) + log.info(s"Starting the Kamon(Play) extension") private val config = system.settings.config.getConfig("kamon.play") diff --git a/kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala b/kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala index 3247fcc9..7d688e60 100644 --- a/kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala +++ b/kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala @@ -16,11 +16,11 @@ package kamon.play.instrumentation import kamon.Kamon -import kamon.play.{ PlayExtension, Play } +import kamon.play.{ Play, PlayExtension } import kamon.trace.{ TraceContextAware, TraceRecorder } import org.aspectj.lang.ProceedingJoinPoint import org.aspectj.lang.annotation._ -import play.api.mvc._ +import play.api.mvc.{ RequestHeader, EssentialAction, SimpleResult } import play.libs.Akka @Aspect @@ -52,31 +52,24 @@ class RequestInstrumentation { val essentialAction = (requestHeader: RequestHeader) ⇒ { val incomingContext = TraceRecorder.currentContext - val playExtension = Kamon(Play)(Akka.system()) - val executor = playExtension.defaultDispatcher + val executor = Kamon(Play)(Akka.system()).defaultDispatcher next(requestHeader).map { result ⇒ - TraceRecorder.currentContext.map { ctx ⇒ - recordHttpServerMetrics(result, ctx.name, playExtension) - } - TraceRecorder.finish() - incomingContext match { - case None ⇒ result - case Some(traceContext) ⇒ - val playExtension = Kamon(Play)(traceContext.system) - if (playExtension.includeTraceToken) { - result.withHeaders(playExtension.traceTokenHeaderName -> traceContext.token) - } else result - } + incomingContext.map { ctx ⇒ + val playExtension = Kamon(Play)(ctx.system) + recordHttpServerMetrics(result, ctx.name, playExtension) + if (playExtension.includeTraceToken) result.withHeaders(playExtension.traceTokenHeaderName -> ctx.token) + else result + }.getOrElse(result) }(executor) } pjp.proceed(Array(EssentialAction(essentialAction))) } - def recordHttpServerMetrics(result: SimpleResult, traceName: String, playExtension: PlayExtension): Unit = + private def recordHttpServerMetrics(result: SimpleResult, traceName: String, playExtension: PlayExtension): Unit = playExtension.httpServerMetrics.recordResponse(traceName, result.header.status.toString, 1L) @Around("execution(* play.api.GlobalSettings+.onError(..)) && args(request, ex)") |