mirror of
https://github.com/ocaml-tracing/ocaml-opentelemetry.git
synced 2026-03-08 03:47:59 -04:00
feat lib: easily access the main tracer, logger, etc
This commit is contained in:
parent
76a54ac6e1
commit
b9a05737d7
5 changed files with 25 additions and 10 deletions
|
|
@ -29,9 +29,9 @@ type t = {
|
|||
let dummy () : t =
|
||||
let ticker = Cb_set.create () in
|
||||
{
|
||||
emit_spans = Emitter.dummy ();
|
||||
emit_metrics = Emitter.dummy ();
|
||||
emit_logs = Emitter.dummy ();
|
||||
emit_spans = Emitter.dummy;
|
||||
emit_metrics = Emitter.dummy;
|
||||
emit_logs = Emitter.dummy;
|
||||
on_tick = Cb_set.register ticker;
|
||||
tick = (fun () -> Cb_set.trigger ticker);
|
||||
cleanup = (fun ~on_done () -> on_done ());
|
||||
|
|
|
|||
|
|
@ -46,12 +46,11 @@ let tap (f : 'a -> unit) (self : 'a t) : 'a t =
|
|||
in
|
||||
{ self with emit }
|
||||
|
||||
let dummy () : _ t =
|
||||
let closed = Atomic.make false in
|
||||
let dummy : _ t =
|
||||
{
|
||||
enabled = (fun () -> false);
|
||||
emit = ignore;
|
||||
tick = (fun ~now:_ -> ());
|
||||
closed = (fun () -> Atomic.get closed);
|
||||
flush_and_close = (fun () -> Atomic.set closed true);
|
||||
closed = (fun () -> true);
|
||||
flush_and_close = ignore;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,12 +8,17 @@ open Opentelemetry_emitter
|
|||
|
||||
type t = Log_record.t Emitter.t
|
||||
|
||||
let dummy () : t = Emitter.dummy ()
|
||||
let dummy : t = Emitter.dummy
|
||||
|
||||
let enabled = Emitter.enabled
|
||||
|
||||
let of_exporter (exp : Exporter.t) : t = exp.emit_logs
|
||||
|
||||
let get_main () : t =
|
||||
match Main_exporter.get () with
|
||||
| None -> dummy
|
||||
| Some e -> e.emit_logs
|
||||
|
||||
let emit ?attrs:_ (logs : Log_record.t list) : unit =
|
||||
match Main_exporter.get () with
|
||||
| None -> ()
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ open Opentelemetry_emitter
|
|||
|
||||
type t = Metrics.t Emitter.t
|
||||
|
||||
let dummy () : t = Emitter.dummy ()
|
||||
let dummy : t = Emitter.dummy
|
||||
|
||||
let enabled = Emitter.enabled
|
||||
|
||||
|
|
@ -16,6 +16,11 @@ let (emit [@deprecated "use an explicit Metrics_emitter.t"]) =
|
|||
| None -> ()
|
||||
| Some exp -> Exporter.send_metrics exp l
|
||||
|
||||
let get_main () : t =
|
||||
match Main_exporter.get () with
|
||||
| None -> dummy
|
||||
| Some e -> e.emit_metrics
|
||||
|
||||
(** An emitter that uses the current {!Main_exporter} *)
|
||||
let dynamic_forward_to_main_exporter : t =
|
||||
Main_exporter.Util.dynamic_forward_to_main_exporter () ~get_emitter:(fun e ->
|
||||
|
|
|
|||
|
|
@ -16,13 +16,19 @@ type t = Span.t Emitter.t
|
|||
https://opentelemetry.io/docs/specs/otel/trace/api/#tracer *)
|
||||
|
||||
(** Dummy tracer, always disabled *)
|
||||
let dummy () : t = Emitter.dummy ()
|
||||
let dummy : t = Emitter.dummy
|
||||
|
||||
(** A tracer that uses the current {!Main_exporter} *)
|
||||
let dynamic_forward_to_main_exporter : t =
|
||||
Main_exporter.Util.dynamic_forward_to_main_exporter () ~get_emitter:(fun e ->
|
||||
e.emit_spans)
|
||||
|
||||
(** Get tracer using the main exporter in {!Main_exporter} *)
|
||||
let get_main () : t =
|
||||
match Main_exporter.get () with
|
||||
| None -> dummy
|
||||
| Some e -> e.emit_spans
|
||||
|
||||
let (add_event [@deprecated "use Span.add_event"]) = Span.add_event
|
||||
|
||||
let (add_attrs [@deprecated "use Span.add_attrs"]) = Span.add_attrs
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue