aboutsummaryrefslogtreecommitdiff
path: root/kamon-play
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2014-08-13 20:41:30 -0400
committerIvan Topolnjak <ivantopo@gmail.com>2014-08-13 20:41:30 -0400
commit653ceaa3de4944c7c4788577c61ce8597ce9a8ae (patch)
treeb580e2aca6dd8b68004893b66e49305e950bc1c4 /kamon-play
parentf774c4736545e1584f74b87c0a7d74d2ba6a07aa (diff)
parent79ccffe3fff870d8a9338576eff6caad7ed69992 (diff)
downloadKamon-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.scala6
-rw-r--r--kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala27
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)")