| Crates.io | emit_opentelemetry |
| lib.rs | emit_opentelemetry |
| version | 0.30.0 |
| created_at | 2024-06-07 00:10:51.099019+00 |
| updated_at | 2025-06-04 20:07:44.984465+00 |
| description | Emit diagnostic events to the OpenTelemetry SDK. |
| homepage | |
| repository | https://github.com/emit-rs/emit_opentelemetry |
| max_upload_size | |
| id | 1264272 |
| size | 93,632 |
emit_opentelemetryIntegrate emit with the OpenTelemetry SDK.
This library forwards diagnostic events from emit through the OpenTelemetry SDK as log records and spans.
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.
emit_opentelemetry version x.y.z is compatible with opentelemetry_sdk version x.y.*.