logfire client for zig

use BatchSpanProcessor for async export

BasicSpanProcessor exports synchronously on every span.end(), causing
major latency overhead (~100-200ms per span for OTLP HTTP requests).

BatchSpanProcessor queues spans and exports them in batches every 1s
via a background thread, eliminating export latency from the request path.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

+6 -3
+6 -3
src/otel_wrapper.zig
··· 119 119 otel_api.trace.Sampler{ .keep = {} }, 120 120 ); 121 121 122 - // add OTLP exporter pipeline using pipelineBuilder pattern 122 + // add OTLP exporter pipeline using BatchSpanProcessor for async export 123 + // (BasicSpanProcessor exports synchronously on every span.end(), causing latency) 123 124 var builder = provider_ptr.pipelineBuilder(); 124 125 builder = builder.with( 125 - otel_sdk.trace.BasicSpanProcessor.PipelineStep.init({}) 126 - .flowTo(otel_exporters.otlp.OtlpTraceExporter.PipelineStep.init(otlp_config)), 126 + otel_sdk.trace.BatchSpanProcessor.PipelineStep.init(.{ 127 + .export_interval_ms = 1000, // export every 1s 128 + .max_queue_size = 2048, 129 + }).flowTo(otel_exporters.otlp.OtlpTraceExporter.PipelineStep.init(otlp_config)), 127 130 ); 128 131 try builder.done(); 129 132