diff options
author | Ivan Topolnjak <ivantopo@gmail.com> | 2017-11-23 01:43:34 +0100 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2017-11-23 01:43:34 +0100 |
commit | 114918ea3932e5d45416e894838097208cce7c2c (patch) | |
tree | edc1bff1e90ed6ab2fa89fb35f285c351fb5e2f3 /kamon-core | |
parent | a71f5bc53a3c540cb839c3709eb3a114470dbcd4 (diff) | |
download | Kamon-114918ea3932e5d45416e894838097208cce7c2c.tar.gz Kamon-114918ea3932e5d45416e894838097208cce7c2c.tar.bz2 Kamon-114918ea3932e5d45416e894838097208cce7c2c.zip |
add utility apis for easier usage of Spans in the current context
Diffstat (limited to 'kamon-core')
-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() |