public final class GlobalTracer extends Object implements Tracer
register(Tracer)
.
The register method should only be called once
during the application initialization phase.
If the register method is never called,
the default NoopTracer
is used.
Where possible, use some form of dependency injection (of which there are many) to access the `Tracer` instance. For vanilla application code, this is often reasonable and cleaner for all of the usual DI reasons.
That said, instrumentation for packages that are themselves statically
configured (e.g., JDBC drivers) may be unable to make use of said DI
mechanisms for Tracer
access, and as such they should fall back on
GlobalTracer
. By and large, OpenTracing instrumentation should
always allow the programmer to specify a Tracer
instance to use for
instrumentation, though the GlobalTracer
is a reasonable fallback or
default value.
Tracer.SpanBuilder
Modifier and Type | Method and Description |
---|---|
Span |
activeSpan() |
Tracer.SpanBuilder |
buildSpan(String operationName) |
<C> SpanContext |
extract(Format<C> format,
C carrier) |
static Tracer |
get()
Returns the constant GlobalTracer.
|
<C> void |
inject(SpanContext spanContext,
Format<C> format,
C carrier) |
static boolean |
isRegistered()
Identify whether a
Tracer has previously been registered. |
static void |
register(Tracer tracer)
Register a
Tracer to back the behaviour of the global tracer . |
ScopeManager |
scopeManager() |
String |
toString() |
public static Tracer get()
All methods are forwarded to the currently configured tracer.
Until a tracer is explicitly configured
,
the NoopTracer
is used.
register(Tracer)
public static void register(Tracer tracer)
Tracer
to back the behaviour of the global tracer
.
Registration is a one-time operation, attempting to call it more often will result in a runtime exception.
Every application intending to use the global tracer is responsible for registering it once during its initialization.
tracer
- Tracer to use as global tracer.RuntimeException
- if there is already a current tracer registeredpublic static boolean isRegistered()
Tracer
has previously been registered.
This check is useful in scenarios where more than one component may be responsible for registering a tracer. For example, when using a Java Agent, it will need to determine if the application has already registered a tracer, and if not attempt to resolve and register one itself.
public ScopeManager scopeManager()
scopeManager
in interface Tracer
public Tracer.SpanBuilder buildSpan(String operationName)
public <C> void inject(SpanContext spanContext, Format<C> format, C carrier)
public <C> SpanContext extract(Format<C> format, C carrier)
public Span activeSpan()
activeSpan
in interface Tracer
Copyright © 2016–2018 OpenTracing. All rights reserved.