Server tools to backfill, tail, mirror, and verify PLC logs
at main 28 lines 1.0 kB view raw
1use opentelemetry::trace::TracerProvider as _; 2use opentelemetry_otlp::{Protocol, WithExportConfig}; 3use opentelemetry_sdk::trace::{RandomIdGenerator, Sampler, SdkTracer, SdkTracerProvider}; 4use tracing::Subscriber; 5use tracing_opentelemetry::OpenTelemetryLayer; 6use tracing_subscriber::registry::LookupSpan; 7 8pub fn otel_layer<S>() -> OpenTelemetryLayer<S, SdkTracer> 9where 10 S: Subscriber + for<'span> LookupSpan<'span>, 11{ 12 let exporter = opentelemetry_otlp::SpanExporter::builder() 13 .with_http() 14 .with_protocol(Protocol::HttpBinary) 15 .build() 16 .expect("to build otel otlp exporter"); 17 18 let provider = SdkTracerProvider::builder() 19 .with_sampler(Sampler::ParentBased(Box::new(Sampler::TraceIdRatioBased( 20 1.0, 21 )))) 22 .with_id_generator(RandomIdGenerator::default()) 23 .with_batch_exporter(exporter) 24 .build(); 25 26 let tracer = provider.tracer("tracing-otel-subscriber"); 27 tracing_opentelemetry::layer().with_tracer(tracer) 28}