diff options
Diffstat (limited to 'kamon-core/src')
-rw-r--r-- | kamon-core/src/main/scala/kamon/Kamon.scala | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/kamon-core/src/main/scala/kamon/Kamon.scala b/kamon-core/src/main/scala/kamon/Kamon.scala index 6e0a260d..1a9dbe95 100644 --- a/kamon-core/src/main/scala/kamon/Kamon.scala +++ b/kamon-core/src/main/scala/kamon/Kamon.scala @@ -122,6 +122,22 @@ object Kamon extends MetricLookup with ReporterRegistry with Tracer { def withContextKey[T, K](key: Key[K], value: K)(f: => T): T = withContext(currentContext().withKey(key, value))(f) + def withSpan[T](span: Span)(f: => T): T = + withSpan(span, true)(f) + + def withSpan[T](span: Span, finishSpan: Boolean)(f: => T): T = { + try { + withContextKey(Span.ContextKey, span)(f) + } catch { + case t: Throwable => + span.addError(t.getMessage, t) + throw t + + } finally { + if(finishSpan) + span.finish() + } + } override def loadReportersFromConfig(): Unit = _reporterRegistry.loadReportersFromConfig() |