diff options
author | Ivan Topolnjak <ivantopo@gmail.com> | 2017-08-24 11:23:21 +0200 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2017-08-24 11:23:21 +0200 |
commit | cd54e4ed73734dbabebbf22e4fa288c9b047992e (patch) | |
tree | 73a94488fb9097c3e3fe1ad0271f9caadd53f6cf /kamon-core/src/main/scala/kamon/trace/SpanCustomizer.scala | |
parent | 5291089bcc6bb048dcecad2c931f3408bd539574 (diff) | |
download | Kamon-cd54e4ed73734dbabebbf22e4fa288c9b047992e.tar.gz Kamon-cd54e4ed73734dbabebbf22e4fa288c9b047992e.tar.bz2 Kamon-cd54e4ed73734dbabebbf22e4fa288c9b047992e.zip |
introduce the SpanCustomizer API
Diffstat (limited to 'kamon-core/src/main/scala/kamon/trace/SpanCustomizer.scala')
-rw-r--r-- | kamon-core/src/main/scala/kamon/trace/SpanCustomizer.scala | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/kamon-core/src/main/scala/kamon/trace/SpanCustomizer.scala b/kamon-core/src/main/scala/kamon/trace/SpanCustomizer.scala new file mode 100644 index 00000000..4c6220ce --- /dev/null +++ b/kamon-core/src/main/scala/kamon/trace/SpanCustomizer.scala @@ -0,0 +1,35 @@ +package kamon.trace + +import kamon.context.Key +import kamon.trace.Tracer.SpanBuilder + +/** + * Allows users to customize and add additional information to Spans created by instrumentation. The typical use + * case for SpanCustomizer instances is to provide proper operation names in situations where the instrumentation + * is unable to generate a reasonable enough operation name, e.g. JDBC and HTTP Client calls, instead of having a + * default operation name using the statement type or target host a SpanCustomizer can be provided to assign operation + * names like "queryUsers" or "getUserProfile" instead. + * + * Instrumentation wanting to take advantage of SpanCustomizers should look for an instance in the current context + * using SpanCustomizer.ContextKey. + * + */ +trait SpanCustomizer { + def customize(spanBuilder: SpanBuilder): SpanBuilder +} + +object SpanCustomizer { + + val Noop = new SpanCustomizer { + override def customize(spanBuilder: SpanBuilder): SpanBuilder = spanBuilder + } + + val ContextKey = Key.local[SpanCustomizer]("span-customizer", Noop) + + def forOperationName(operationName: String): SpanCustomizer = new SpanCustomizer { + override def customize(spanBuilder: SpanBuilder): SpanBuilder = + spanBuilder.withOperationName(operationName) + } +} + + |