ocaml-opentelemetry/src/client/self_trace.ml
Simon Cruanes 210b7991c9
rework tracer/meter/logger interfaces
- Meter is new, and makes more sense than
Metrics_callbacks/Metrics_emitter
- Instrument in core, with some basic counters, gauges, and histograms,
+ the possibility to do one's own
2026-02-20 12:31:15 -05:00

28 lines
725 B
OCaml

open Common_
let enabled = Atomic.make false
let tracer = Atomic.make OTEL.Tracer.default
let[@inline] add_event (scope : OTEL.Span.t) ev = OTEL.Span.add_event scope ev
let set_tracer tr = Atomic.set tracer tr
let dummy_trace_id_ = OTEL.Trace_id.dummy
let dummy_span_id = OTEL.Span_id.dummy
let with_ ?kind ?attrs name f =
if Atomic.get enabled then (
let tracer = Atomic.get tracer in
OTEL.Tracer.with_ ~tracer ?kind ?attrs name f
) else (
(* A new scope is needed here because it might be modified *)
let span : OTEL.Span.t =
OTEL.Span.make ~trace_id:dummy_trace_id_ ~id:dummy_span_id ~start_time:0L
~end_time:0L name
in
f span
)
let set_enabled b = Atomic.set enabled b