Package brave.baggage
Class CorrelationScopeDecorator
java.lang.Object
brave.baggage.CorrelationScopeDecorator
- All Implemented Interfaces:
CurrentTraceContext.ScopeDecorator
public abstract class CorrelationScopeDecorator extends Object implements CurrentTraceContext.ScopeDecorator
Synchronizes fields such as
BaggageFields.TRACE_ID
with a correlation context, such as
logging through decoration of a scope. A maximum of 32 fields are supported.
Setup example:
import brave.baggage.CorrelationScopeConfig.SingleCorrelationField;
// Add the field "region", so it can be used as a log expression %X{region}
CLOUD_REGION = BaggageFields.constant("region", System.getEnv("CLOUD_REGION"));
decorator = MDCScopeDecorator.newBuilder()
.add(SingleCorrelationField.create(CLOUD_REGION))
.build();
// Integrate the decorator
tracing = Tracing.newBuilder()
.currentTraceContext(ThreadLocalCurrentTraceContext.newBuilder()
.addScopeDecorator(decorator)
.build())
...
.build();
// Any scope operations (updates to the current span) apply the fields defined by the decorator.
ScopedSpan span = tracing.tracer().startScopedSpan("encode");
try {
// The below log message will have %X{region} in the context!
logger.info("Encoding the span, hope it works");
return encoder.encode();
} catch (RuntimeException | Error e) {
span.error(e); // Unless you handle exceptions, you might not know the operation failed!
throw e;
} finally {
span.finish();
}
- Since:
- 5.11
- See Also:
CorrelationScopeConfig
,CorrelationScopeCustomizer
,BaggagePropagation
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
CorrelationScopeDecorator.Builder
Defaults toBaggageFields.TRACE_ID
andBaggageFields.SPAN_ID
. -
Field Summary
-
Method Summary