aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/trace
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2014-01-27 09:11:32 -0300
committerIvan Topolnjak <ivantopo@gmail.com>2014-01-27 09:11:32 -0300
commit633b4058207d084724743c6b6367ac60f95ff987 (patch)
treea0ea788593b93b2657e1924e578ff274aab3eeee /kamon-core/src/main/scala/kamon/trace
parentf341a9f01aa53bb79dbbc8a2cccd652c03ae5267 (diff)
downloadKamon-633b4058207d084724743c6b6367ac60f95ff987.tar.gz
Kamon-633b4058207d084724743c6b6367ac60f95ff987.tar.bz2
Kamon-633b4058207d084724743c6b6367ac60f95ff987.zip
rename UOW to TraceToken and generate it by default when a Trace starts
Diffstat (limited to 'kamon-core/src/main/scala/kamon/trace')
-rw-r--r--kamon-core/src/main/scala/kamon/trace/Trace.scala19
-rw-r--r--kamon-core/src/main/scala/kamon/trace/TraceContext.scala2
-rw-r--r--kamon-core/src/main/scala/kamon/trace/logging/LogbackTraceTokenConverter.scala (renamed from kamon-core/src/main/scala/kamon/trace/logging/LogbackUowConverter.scala)4
3 files changed, 17 insertions, 8 deletions
diff --git a/kamon-core/src/main/scala/kamon/trace/Trace.scala b/kamon-core/src/main/scala/kamon/trace/Trace.scala
index 31e8185a..7dd3a6f8 100644
--- a/kamon-core/src/main/scala/kamon/trace/Trace.scala
+++ b/kamon-core/src/main/scala/kamon/trace/Trace.scala
@@ -21,6 +21,8 @@ import scala.Some
import kamon.trace.Trace.Register
import scala.concurrent.duration._
import java.util.concurrent.atomic.AtomicLong
+import scala.util.Try
+import java.net.InetAddress
object Trace extends ExtensionId[TraceExtension] with ExtensionIdProvider {
def lookup(): ExtensionId[_ <: Extension] = Trace
@@ -40,8 +42,8 @@ object Trace extends ExtensionId[TraceExtension] with ExtensionIdProvider {
private def set(ctx: Option[TraceContext]) = traceContext.set(ctx)
def clear: Unit = traceContext.remove()
- def start(name: String)(implicit system: ActorSystem): TraceContext = {
- val ctx = newTraceContext(name)
+ def start(name: String, token: Option[String])(implicit system: ActorSystem): TraceContext = {
+ val ctx = newTraceContext(name, token.getOrElse(TraceToken.generate()))
ctx.start(name)
set(Some(ctx))
@@ -68,7 +70,7 @@ object Trace extends ExtensionId[TraceExtension] with ExtensionIdProvider {
}
// TODO: FIX
- def newTraceContext(name: String)(implicit system: ActorSystem): TraceContext = TraceContext(Kamon(Trace).api, tranid.getAndIncrement, name)
+ def newTraceContext(name: String, token: String)(implicit system: ActorSystem): TraceContext = TraceContext(Kamon(Trace).api, tranid.getAndIncrement, name, token)
def startSegment(category: Segments.Category, description: String = "", attributes: Map[String, String] = Map()): SegmentCompletionHandle = {
val start = Segments.Start(category, description, attributes)
@@ -80,14 +82,21 @@ object Trace extends ExtensionId[TraceExtension] with ExtensionIdProvider {
case class SegmentCompletionHandle(start: Segments.Start) {
def complete(): Unit = {
val end = Segments.End()
- println(s"Completing the Segment: $start - $end")
+ //println(s"Completing the Segment: $start - $end")
}
def complete(end: Segments.End): Unit = {
- println(s"Completing the Segment: $start - $end")
+ //println(s"Completing the Segment: $start - $end")
}
}
}
+object TraceToken {
+ val tokenCounter = new AtomicLong
+ val hostnamePrefix = Try(InetAddress.getLocalHost.getHostName).getOrElse("unknown-localhost")
+
+ def generate(): String = "%s-%s".format(hostnamePrefix, tokenCounter.incrementAndGet())
+}
+
class TraceExtension(system: ExtendedActorSystem) extends Kamon.Extension {
val api: ActorRef = system.actorOf(Props[TraceManager], "kamon-trace")
}
diff --git a/kamon-core/src/main/scala/kamon/trace/TraceContext.scala b/kamon-core/src/main/scala/kamon/trace/TraceContext.scala
index 3e68a816..5780b749 100644
--- a/kamon-core/src/main/scala/kamon/trace/TraceContext.scala
+++ b/kamon-core/src/main/scala/kamon/trace/TraceContext.scala
@@ -23,7 +23,7 @@ import kamon.Kamon
import kamon.trace.UowTracing.{ Finish, Start }
// TODO: Decide if we need or not an ID, generating it takes time and it doesn't seem necessary.
-case class TraceContext(private val collector: ActorRef, id: Long, uow: String = "", userContext: Option[Any] = None) {
+case class TraceContext(private val collector: ActorRef, id: Long, name: String, token: String, userContext: Option[Any] = None) {
def start(name: String) = {
collector ! Start(id, name)
diff --git a/kamon-core/src/main/scala/kamon/trace/logging/LogbackUowConverter.scala b/kamon-core/src/main/scala/kamon/trace/logging/LogbackTraceTokenConverter.scala
index add47fdf..403e4ee7 100644
--- a/kamon-core/src/main/scala/kamon/trace/logging/LogbackUowConverter.scala
+++ b/kamon-core/src/main/scala/kamon/trace/logging/LogbackTraceTokenConverter.scala
@@ -19,6 +19,6 @@ 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")
+class LogbackTraceTokenConverter extends ClassicConverter {
+ def convert(event: ILoggingEvent): String = Trace.context().map(_.token).getOrElse("undefined")
}