aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/trace/TraceLocal.scala
diff options
context:
space:
mode:
authorDiego <diegolparra@gmail.com>2014-11-19 22:09:41 -0300
committerDiego <diegolparra@gmail.com>2014-11-19 22:09:41 -0300
commit827644d92a216172cd587f253c1fc1a0bbdb5eaf (patch)
tree52883845f601cca03f5e299be536b4d9b013b48a /kamon-core/src/main/scala/kamon/trace/TraceLocal.scala
parentd990039c7e0a3b6a909f93dc477fc7aaf4907e42 (diff)
downloadKamon-827644d92a216172cd587f253c1fc1a0bbdb5eaf.tar.gz
Kamon-827644d92a216172cd587f253c1fc1a0bbdb5eaf.tar.bz2
Kamon-827644d92a216172cd587f253c1fc1a0bbdb5eaf.zip
+ core: refactor MDC facilities and closes #100
Diffstat (limited to 'kamon-core/src/main/scala/kamon/trace/TraceLocal.scala')
-rw-r--r--kamon-core/src/main/scala/kamon/trace/TraceLocal.scala18
1 files changed, 17 insertions, 1 deletions
diff --git a/kamon-core/src/main/scala/kamon/trace/TraceLocal.scala b/kamon-core/src/main/scala/kamon/trace/TraceLocal.scala
index 0766af74..a7296c31 100644
--- a/kamon-core/src/main/scala/kamon/trace/TraceLocal.scala
+++ b/kamon-core/src/main/scala/kamon/trace/TraceLocal.scala
@@ -16,14 +16,28 @@
package kamon.trace
-import scala.collection.concurrent.TrieMap
import kamon.trace.TraceLocal.TraceLocalKey
+import scala.collection.concurrent.TrieMap
+
object TraceLocal {
+
trait TraceLocalKey {
type ValueType
}
+ trait AvailableToMdc extends TraceLocalKey {
+ override type ValueType = String
+ def mdcKey: String
+ }
+
+ object AvailableToMdc {
+ case class DefaultKeyAvailableToMdc(mdcKey: String) extends AvailableToMdc
+
+ def fromKey(mdcKey: String): AvailableToMdc = DefaultKeyAvailableToMdc(mdcKey)
+ def apply(mdcKey: String): AvailableToMdc = fromKey(mdcKey)
+ }
+
def store(key: TraceLocalKey)(value: key.ValueType): Unit = TraceRecorder.currentContext match {
case ctx: DefaultTraceContext ⇒ ctx.traceLocalStorage.store(key)(value)
case EmptyTraceContext ⇒ // Can't store in the empty context.
@@ -33,6 +47,8 @@ object TraceLocal {
case ctx: DefaultTraceContext ⇒ ctx.traceLocalStorage.retrieve(key)
case EmptyTraceContext ⇒ None // Can't retrieve anything from the empty context.
}
+
+ def storeForMdc(key: String, value: String): Unit = store(AvailableToMdc.fromKey(key))(value)
}
class TraceLocalStorage {