aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorivantopo <ivantopo@gmail.com>2013-12-26 10:26:52 -0800
committerivantopo <ivantopo@gmail.com>2013-12-26 10:26:52 -0800
commitd04ba88cc5abba81b2332661170b96320cad9182 (patch)
tree4fb187bc073f04c733e0e0b3949722ee50ef5a03
parentda5f0b89ab1912c84f948872fa54bef761ffe173 (diff)
parent9fd83d6a2d53e93e8d5042eeea722e1992e760b5 (diff)
downloadKamon-d04ba88cc5abba81b2332661170b96320cad9182.tar.gz
Kamon-d04ba88cc5abba81b2332661170b96320cad9182.tar.bz2
Kamon-d04ba88cc5abba81b2332661170b96320cad9182.zip
Merge pull request #11 from crypticmind/master
-MDC +Logback Converter
-rw-r--r--kamon-spray/src/main/scala/kamon/spray/UowDirectives.scala4
-rw-r--r--kamon-trace/src/main/scala/kamon/trace/UowTracing.scala2
-rw-r--r--kamon-trace/src/main/scala/kamon/trace/instrumentation/ActorLoggingTracing.scala12
-rw-r--r--kamon-trace/src/main/scala/kamon/trace/logging/LogbackUowConverter.scala24
-rw-r--r--project/Build.scala3
5 files changed, 33 insertions, 12 deletions
diff --git a/kamon-spray/src/main/scala/kamon/spray/UowDirectives.scala b/kamon-spray/src/main/scala/kamon/spray/UowDirectives.scala
index b4ff1877..44db55e7 100644
--- a/kamon-spray/src/main/scala/kamon/spray/UowDirectives.scala
+++ b/kamon-spray/src/main/scala/kamon/spray/UowDirectives.scala
@@ -21,6 +21,7 @@ import java.util.concurrent.atomic.AtomicLong
import scala.util.Try
import java.net.InetAddress
import kamon.trace.Trace
+import spray.http.HttpHeaders.RawHeader
trait UowDirectives extends BasicDirectives {
def uow: Directive0 = mapRequest { request ⇒
@@ -30,6 +31,7 @@ trait UowDirectives extends BasicDirectives {
Trace.transformContext(_.copy(uow = generatedUow))
request
}
+ def respondWithUow = mapHttpResponseHeaders(headers ⇒ Trace.context().map(ctx ⇒ RawHeader("X-UOW", ctx.uow) :: headers).getOrElse(headers))
}
object UowDirectives {
@@ -37,4 +39,4 @@ object UowDirectives {
val hostnamePrefix = Try(InetAddress.getLocalHost.getHostName).getOrElse("unknown-localhost")
def newUow = "%s-%s".format(hostnamePrefix, uowCounter.incrementAndGet())
-} \ No newline at end of file
+}
diff --git a/kamon-trace/src/main/scala/kamon/trace/UowTracing.scala b/kamon-trace/src/main/scala/kamon/trace/UowTracing.scala
index 3d1a7778..20cce830 100644
--- a/kamon-trace/src/main/scala/kamon/trace/UowTracing.scala
+++ b/kamon-trace/src/main/scala/kamon/trace/UowTracing.scala
@@ -79,4 +79,4 @@ class UowTraceAggregator(reporting: ActorRef, aggregationTimeout: Duration) exte
object UowTraceAggregator {
def props(reporting: ActorRef, aggregationTimeout: Duration) = Props(classOf[UowTraceAggregator], reporting, aggregationTimeout)
-} \ No newline at end of file
+}
diff --git a/kamon-trace/src/main/scala/kamon/trace/instrumentation/ActorLoggingTracing.scala b/kamon-trace/src/main/scala/kamon/trace/instrumentation/ActorLoggingTracing.scala
index 783fd6e1..0d06eb2c 100644
--- a/kamon-trace/src/main/scala/kamon/trace/instrumentation/ActorLoggingTracing.scala
+++ b/kamon-trace/src/main/scala/kamon/trace/instrumentation/ActorLoggingTracing.scala
@@ -17,8 +17,7 @@ package kamon.trace.instrumentation
import org.aspectj.lang.annotation.{ Around, Pointcut, DeclareMixin, Aspect }
import org.aspectj.lang.ProceedingJoinPoint
-import org.slf4j.MDC
-import kamon.trace.{ TraceContext, ContextAware, Trace }
+import kamon.trace.{ ContextAware, Trace }
@Aspect
class ActorLoggingTracing {
@@ -31,13 +30,8 @@ class ActorLoggingTracing {
@Around("withMdcInvocation(logSource, logEvent, logStatement)")
def aroundWithMdcInvocation(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()
+ Trace.withContext(logEvent.traceContext) {
+ pjp.proceed()
}
}
}
diff --git a/kamon-trace/src/main/scala/kamon/trace/logging/LogbackUowConverter.scala b/kamon-trace/src/main/scala/kamon/trace/logging/LogbackUowConverter.scala
new file mode 100644
index 00000000..add47fdf
--- /dev/null
+++ b/kamon-trace/src/main/scala/kamon/trace/logging/LogbackUowConverter.scala
@@ -0,0 +1,24 @@
+/* ===================================================
+ * Copyright © 2013 the kamon project <http://kamon.io/>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+package kamon.trace.logging
+
+import ch.qos.logback.classic.pattern.ClassicConverter
+import ch.qos.logback.classic.spi.ILoggingEvent
+import kamon.trace.Trace
+
+class LogbackUowConverter extends ClassicConverter {
+ def convert(event: ILoggingEvent): String = Trace.context().map(_.uow).getOrElse("undefined")
+}
diff --git a/project/Build.scala b/project/Build.scala
index 3a6d4f13..2b022ba6 100644
--- a/project/Build.scala
+++ b/project/Build.scala
@@ -32,6 +32,7 @@ object Build extends Build {
.settings(
libraryDependencies ++=
compile(akkaActor, aspectJ) ++
+ provided(logback) ++
test(scalatest, akkaTestKit, sprayTestkit, akkaSlf4j, logback))
.dependsOn(kamonCore)
@@ -94,4 +95,4 @@ object Build extends Build {
val noPublishing = Seq(publish := (), publishLocal := ())
-} \ No newline at end of file
+}