aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/Kamon.scala
diff options
context:
space:
mode:
Diffstat (limited to 'kamon-core/src/main/scala/kamon/Kamon.scala')
-rw-r--r--kamon-core/src/main/scala/kamon/Kamon.scala16
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()