[][src]Crate tracing_opentelemetry

Tracing OpenTelemetry

tracing is a framework for instrumenting Rust programs to collect structured, event-based diagnostic information. This crate provides a layer that connects spans from multiple systems into a trace and emits them to OpenTelemetry-compatible distributed tracing systems for processing and visualization.

Examples

use opentelemetry::{api::Provider, sdk};
use tracing::{error, span};
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::Registry;

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

// Create a new OpenTelemetry tracing layer
let telemetry = tracing_opentelemetry::layer().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

An OpenTelemetry propagation layer for use in a project that uses tracing.

Traits

OpenTelemetrySpanExt

Utility functions to allow tracing Spans to accept and return OpenTelemetry Contexts.

Functions

layer

Construct a layer to track spans via OpenTelemetry.