[][src]Trait tracing_opentelemetry::OpenTelemetrySpanExt

pub trait OpenTelemetrySpanExt {
    fn set_parent(&self, span_context: SpanContext);
fn context(&self) -> SpanContext; }

OpenTelemetrySpanExt allows tracing spans to accept and return OpenTelemetry SpanContexts.

Required methods

fn set_parent(&self, span_context: SpanContext)

Associates self with a given OpenTelemetry trace, using the provided parent context.

use opentelemetry::api::{self, HttpTextFormat};
use tracing_opentelemetry::OpenTelemetrySpanExt;
use std::collections::HashMap;
use tracing::Span;

// Example carrier, could be a framework header map that impls `api::Carrier`.
let mut carrier = HashMap::new();

// Propagator can be swapped with trace context propagator binary propagator, etc.
let propagator = api::B3Propagator::new(true);

// Extract otel parent span context via the chosen propagator
let parent_context = propagator.extract(&carrier);

// Generate a tracing span as usual
let app_root = tracing::span!(tracing::Level::INFO, "app_start");

// Assign parent trace from external context
app_root.set_parent(parent_context);

// Or if the current span has been created elsewhere:
Span::current().set_parent(propagator.extract(&carrier));

fn context(&self) -> SpanContext

Extracts an OpenTelemetry context from self.

use opentelemetry::api;
use tracing_opentelemetry::OpenTelemetrySpanExt;
use tracing::Span;

fn make_request(span_context: api::SpanContext) {
    // perform external request after injecting context
    // e.g. if there are request headers that impl `opentelemetry::api::Carrier`
    // then `propagator.inject(span_context, request.headers_mut())`
}

// Generate a tracing span as usual
let app_root = tracing::span!(tracing::Level::INFO, "app_start");

// To include tracing span context in client requests from _this_ app,
// extract the current OpenTelemetry span context.
make_request(app_root.context());

// Or if the current span has been created elsewhere:
make_request(Span::current().context())
Loading content...

Implementations on Foreign Types

impl OpenTelemetrySpanExt for Span[src]

Loading content...

Implementors

Loading content...