#logging-tracing #observability #logging #tracing #metrics #send-event

emit_opentelemetry

Emit diagnostic events to the OpenTelemetry SDK

26 releases

0.28.1 Feb 24, 2025
0.27.0 Jan 8, 2025
0.11.0-alpha.21 Oct 21, 2024
0.11.0-alpha.7 Jul 31, 2024

#428 in Debugging

Download history 16/week @ 2024-12-04 12/week @ 2024-12-11 400/week @ 2025-01-08 6/week @ 2025-02-12 187/week @ 2025-02-19 70/week @ 2025-02-26 5/week @ 2025-03-05

268 downloads per month

MIT/Apache

65KB
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"

[dependencies.emit_opentelemetry]
version = "0.28.1"

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.

Versioning and compatibility

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

Dependencies

~6.5MB
~89K SLoC