#logging-tracing #observability #tracing-metrics #metrics

emit_opentelemetry

Emit diagnostic events to the OpenTelemetry SDK

31 releases

0.31.0 Dec 7, 2025
0.30.0 Jun 4, 2025
0.29.2 May 22, 2025
0.29.0 Mar 26, 2025
0.11.0-alpha.7 Jul 31, 2024

#636 in Debugging

MIT/Apache

72KB
1.5K SLoC

emit_opentelemetry

opentelemetry

Current docs

Integrate emit with the OpenTelemetry SDK.

This library forwards diagnostic events from emit through the OpenTelemetry SDK as log records and spans.

Getting started

Configure the OpenTelemetry SDK as per its documentation, then add emit and emit_opentelemetry to your Cargo.toml:

[dependencies.emit]
version = "1"

# add `emit_openetelemetry` with the same major/minor as the OpenTelemetry SDK
[dependencies.emit_opentelemetry]
version = "0.30"

[dependencies.opentelemetry_sdk]
version = "0.30"
features = ["trace", "logs"]

[dependencies.opentelemetry]
version = "0.30"
features = ["trace", "logs"]

Initialize emit to send diagnostics to the OpenTelemetry SDK using the emit_opentelemetry::setup function:

fn main() {
    // Configure the OpenTelemetry SDK
    // See the OpenTelemetry SDK docs for details on configuration
    let logger_provider = opentelemetry_sdk::logs::SdkLoggerProvider::builder()
        .with_simple_exporter(opentelemetry_stdout::LogExporter::default())
        .build();

    let tracer_provider = opentelemetry_sdk::trace::SdkTracerProvider::builder()
        .with_simple_exporter(opentelemetry_stdout::SpanExporter::default())
        .build();

    // Configure `emit` to point to the OpenTelemetry SDK
    let rt = emit_opentelemetry::setup(logger_provider, tracer_provider).init();

    // Your app code goes here

    rt.blocking_flush(std::time::Duration::from_secs(30));

    // Shutdown the OpenTelemetry SDK
}

This function accepts a LoggerProvider and TracerProvider from the OpenTelemetry SDK to forward emit events to.

For more details on how to use emit once you've initialized it, see the guide, or examples in the main emit repository.

Versioning and compatibility

emit_opentelemetry version x.y.z is compatible with opentelemetry_sdk version x.y.*.

Dependencies

~7MB
~94K SLoC