[][src]Crate tracing_opentelemetry

Tracing OpenTelemetry

An OpenTelemetry layer for the tracing library.

#[macro_use]
extern crate tracing;

use opentelemetry::{api::Provider, sdk};
use tracing_opentelemetry::OpenTelemetryLayer;
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::Registry;

fn main() {
    // Create a new tracer
    let tracer = sdk::Provider::default().get_tracer("service_name");

    // Create a new OpenTelemetry tracing layer
    let telemetry = OpenTelemetryLayer::with_tracer(tracer);

    let subscriber = Registry::default().with(telemetry);

    // Trace executed code
    tracing::subscriber::with_default(subscriber, || {
        let root = span!(tracing::Level::TRACE, "app_start", work_units = 2);
        let _enter = root.enter();

        error!("This event will be logged in the root span.");
    });
}

Structs

OpenTelemetryLayer

OpenTelemetry layer for use in a project that uses tracing.

Traits

OpenTelemetrySpanExt

OpenTelemetrySpanExt allows tracing spans to accept and return OpenTelemetry SpanContexts.