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/trace | |
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/trace')
-rw-r--r-- | kamon-core/src/main/scala/kamon/trace/UowDirectives.scala | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/kamon-core/src/main/scala/kamon/trace/UowDirectives.scala b/kamon-core/src/main/scala/kamon/trace/UowDirectives.scala new file mode 100644 index 00000000..392f53b8 --- /dev/null +++ b/kamon-core/src/main/scala/kamon/trace/UowDirectives.scala @@ -0,0 +1,28 @@ +package kamon.trace + +import spray.routing.directives.BasicDirectives +import spray.routing._ +import kamon.Tracer +import java.util.concurrent.atomic.AtomicLong +import scala.util.Try +import java.net.InetAddress + +trait UowDirectives extends BasicDirectives { + def uow: Directive0 = mapRequest { request => + val uowHeader = request.headers.find(_.name == "X-UOW") + + val generatedUow = uowHeader.map(_.value).getOrElse(UowDirectives.newUow) + Tracer.set(Tracer.context().getOrElse(Tracer.newTraceContext()).copy(uow = generatedUow)) + + request + } +} + +object UowDirectives { + val uowCounter = new AtomicLong + + val hostnamePrefix = Try(InetAddress.getLocalHost.getHostName).getOrElse("unknown-localhost") + + def newUow = "%s-%s".format(hostnamePrefix, uowCounter.incrementAndGet()) + +}
\ No newline at end of file |