diff options
author | Ivan Topolnak <ivantopo@gmail.com> | 2013-10-04 16:12:29 -0300 |
---|---|---|
committer | Ivan Topolnak <ivantopo@gmail.com> | 2013-10-04 16:12:29 -0300 |
commit | 20f9920d4704e28ee8aa066d151b522c0d14e166 (patch) | |
tree | 09ba43ff7ad46223b0ecac8a2e3c6a7f525cfa2a /kamon-core/src/main/scala/kamon/instrumentation | |
parent | edbdd04d67893b4ebbcee1b1b08bc531219f04a9 (diff) | |
download | Kamon-20f9920d4704e28ee8aa066d151b522c0d14e166.tar.gz Kamon-20f9920d4704e28ee8aa066d151b522c0d14e166.tar.bz2 Kamon-20f9920d4704e28ee8aa066d151b522c0d14e166.zip |
Simplify logging instrumentation and integrate it with kamon-core, kamon-ouw is gone.
Diffstat (limited to 'kamon-core/src/main/scala/kamon/instrumentation')
-rw-r--r-- | kamon-core/src/main/scala/kamon/instrumentation/ActorLoggingInstrumentation.scala | 32 | ||||
-rw-r--r-- | kamon-core/src/main/scala/kamon/instrumentation/SprayServerInstrumentation.scala | 4 |
2 files changed, 34 insertions, 2 deletions
diff --git a/kamon-core/src/main/scala/kamon/instrumentation/ActorLoggingInstrumentation.scala b/kamon-core/src/main/scala/kamon/instrumentation/ActorLoggingInstrumentation.scala new file mode 100644 index 00000000..3cf0c6fc --- /dev/null +++ b/kamon-core/src/main/scala/kamon/instrumentation/ActorLoggingInstrumentation.scala @@ -0,0 +1,32 @@ +package kamon.instrumentation + +import org.aspectj.lang.annotation.{Around, Pointcut, DeclareMixin, Aspect} +import kamon.{Tracer, TraceContext} +import org.aspectj.lang.ProceedingJoinPoint +import org.slf4j.MDC + + +@Aspect +class ActorLoggingInstrumentation { + + + @DeclareMixin("akka.event.Logging.LogEvent+") + def traceContextMixin: ContextAware = new ContextAware { + def traceContext: Option[TraceContext] = Tracer.context() + } + + @Pointcut("execution(* akka.event.slf4j.Slf4jLogger.withMdc(..)) && args(logSource, logEvent, logStatement)") + def withMdcInvocation(logSource: String, logEvent: ContextAware, logStatement: () => _): Unit = {} + + @Around("withMdcInvocation(logSource, logEvent, logStatement)") + def putTraceContextInMDC(pjp: ProceedingJoinPoint, logSource: String, logEvent: ContextAware, logStatement: () => _): Unit = { + logEvent.traceContext match { + case Some(ctx) => + MDC.put("uow", ctx.uow) + pjp.proceed() + MDC.remove("uow") + + case None => pjp.proceed() + } + } +} diff --git a/kamon-core/src/main/scala/kamon/instrumentation/SprayServerInstrumentation.scala b/kamon-core/src/main/scala/kamon/instrumentation/SprayServerInstrumentation.scala index 32eabe71..5117e7e7 100644 --- a/kamon-core/src/main/scala/kamon/instrumentation/SprayServerInstrumentation.scala +++ b/kamon-core/src/main/scala/kamon/instrumentation/SprayServerInstrumentation.scala @@ -32,7 +32,7 @@ class SprayServerInstrumentation { Tracer.start val discard = openRequest.asInstanceOf[ContextAware].traceContext - Tracer.context().map(_.entries ! Rename(request.uri.path.toString())) + Tracer.context().map(_.tracer ! Rename(request.uri.path.toString())) } @Pointcut("execution(* spray.can.server.OpenRequestComponent$DefaultOpenRequest.handleResponseEndAndReturnNextOpenRequest(..)) && target(openRequest)") @@ -42,7 +42,7 @@ class SprayServerInstrumentation { def afterFinishingRequest(openRequest: OpenRequest): Unit = { val original = openRequest.asInstanceOf[ContextAware].traceContext - Tracer.context().map(_.entries ! Finish()) + Tracer.context().map(_.tracer ! Finish()) if(Tracer.context() != original) { println(s"OMG DIFFERENT Original: [${original}] - Came in: [${Tracer.context}]") |