diff options
| author | sebright <sebright@google.com> | 2018-08-26 21:08:37 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-08-26 21:08:37 -0700 |
| commit | b8e6dcc312c9655a1d5709c15a2e408903314cbe (patch) | |
| tree | 5241a2940b4c6d896df99c0fca8a0f4fbf83d1c1 | |
| parent | 01f2d7503e0d33abd930e0191f92b5a4a8f0fcd3 (diff) | |
| download | platform_external_opencensus-java-b8e6dcc312c9655a1d5709c15a2e408903314cbe.tar.gz platform_external_opencensus-java-b8e6dcc312c9655a1d5709c15a2e408903314cbe.tar.bz2 platform_external_opencensus-java-b8e6dcc312c9655a1d5709c15a2e408903314cbe.zip | |
Access current span using gRPC context key in OpenCensusTraceLoggingEnhancer. (#1386)
Avoiding accessing the OpenCensus tracing implementation early in initialization
is more robust. See the discussion in
https://github.com/census-instrumentation/opencensus-java/pull/1371#discussion_r211440915
and
https://github.com/census-instrumentation/opencensus-java/pull/1371#discussion_r211441000.
| -rw-r--r-- | contrib/log_correlation/stackdriver/src/main/java/io/opencensus/contrib/logcorrelation/stackdriver/OpenCensusTraceLoggingEnhancer.java | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/contrib/log_correlation/stackdriver/src/main/java/io/opencensus/contrib/logcorrelation/stackdriver/OpenCensusTraceLoggingEnhancer.java b/contrib/log_correlation/stackdriver/src/main/java/io/opencensus/contrib/logcorrelation/stackdriver/OpenCensusTraceLoggingEnhancer.java index 75320fdd..dce75596 100644 --- a/contrib/log_correlation/stackdriver/src/main/java/io/opencensus/contrib/logcorrelation/stackdriver/OpenCensusTraceLoggingEnhancer.java +++ b/contrib/log_correlation/stackdriver/src/main/java/io/opencensus/contrib/logcorrelation/stackdriver/OpenCensusTraceLoggingEnhancer.java @@ -20,10 +20,10 @@ import com.google.cloud.ServiceOptions; import com.google.cloud.logging.LogEntry; import com.google.cloud.logging.LoggingEnhancer; import io.opencensus.common.ExperimentalApi; +import io.opencensus.trace.Span; import io.opencensus.trace.SpanContext; import io.opencensus.trace.TraceId; -import io.opencensus.trace.Tracer; -import io.opencensus.trace.Tracing; +import io.opencensus.trace.unsafe.ContextUtils; import java.util.logging.LogManager; import javax.annotation.Nullable; @@ -57,8 +57,6 @@ public final class OpenCensusTraceLoggingEnhancer implements LoggingEnhancer { "io.opencensus.contrib.logcorrelation.stackdriver." + "OpenCensusTraceLoggingEnhancer.spanSelection"; - private static final Tracer tracer = Tracing.getTracer(); - private final String projectId; private final SpanSelection spanSelection; @@ -184,18 +182,23 @@ public final class OpenCensusTraceLoggingEnhancer implements LoggingEnhancer { case NO_SPANS: return; case SAMPLED_SPANS: - SpanContext span = tracer.getCurrentSpan().getContext(); + SpanContext span = getCurrentSpanContext(); if (span.getTraceOptions().isSampled()) { addTracingData(tracePrefix, span, builder); } return; case ALL_SPANS: - addTracingData(tracePrefix, tracer.getCurrentSpan().getContext(), builder); + addTracingData(tracePrefix, getCurrentSpanContext(), builder); return; } throw new AssertionError("Unknown spanSelection: " + spanSelection); } + private static SpanContext getCurrentSpanContext() { + Span span = ContextUtils.CONTEXT_SPAN_KEY.get(); + return span == null ? SpanContext.INVALID : span.getContext(); + } + private static void addTracingData( String tracePrefix, SpanContext span, LogEntry.Builder builder) { builder.setTrace(formatTraceId(tracePrefix, span.getTraceId())); |
