aboutsummaryrefslogtreecommitdiff
path: root/kamon-uow/src/main/scala/kamon/logging/UowDirectives.scala
blob: e79602ea4e8cf7c7167be20564a49f26e3c2e093 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package kamon.logging

import java.util.concurrent.atomic.AtomicLong
import spray.routing.Directive0
import spray.routing.directives.BasicDirectives
import java.net.InetAddress
import scala.util.Try
import kamon.Kamon

trait UowDirectives extends BasicDirectives {
  def uow: Directive0 = mapRequest { request =>
    val generatedUow = Some(UowDirectives.newUow)
    println("Generated UOW: "+generatedUow)
    Kamon.set(Kamon.newTraceContext().copy(userContext = generatedUow))


    request
  }
}

object UowDirectives {
  val uowCounter = new AtomicLong

  val hostnamePrefix = Try(InetAddress.getLocalHost.getHostName.toString).getOrElse("unknown-localhost")

  def newUow = "%s-%s".format(hostnamePrefix, uowCounter.incrementAndGet())

}