emit_opentelemetry 0.31.1

Emit diagnostic events to the OpenTelemetry SDK.
Documentation

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. It lets you use emit's ergonomic developer-oriented APIs in your OpenTelemetry-instrumented applications. See the guide for more details on using emit.

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.31"

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

[dependencies.opentelemetry]
version = "0.31"
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.*.