ocaml-opentelemetry/src/lib/logger.ml
Simon Cruanes 7454134762
refactor
2026-02-24 15:41:47 -05:00

29 lines
742 B
OCaml

(** Logs.
The logger is an object that can be used to emit logs.
See
{{:https://opentelemetry.io/docs/reference/specification/overview/#log-signal}
the spec} *)
open Opentelemetry_emitter
type t = {
emit: Log_record.t Emitter.t;
clock: Clock.t;
}
(** Dummy logger, always disabled *)
let dummy : t = { emit = Emitter.dummy; clock = Clock.ptime_clock }
let[@inline] enabled (self : t) : bool = Emitter.enabled self.emit
let[@inline] emit1 (self : t) (l : Log_record.t) = Emitter.emit self.emit [ l ]
let of_exporter (exp : Exporter.t) : t =
let emit =
Emitter.make ~signal_name:"logs"
~emit:(fun logs -> exp.Exporter.export (Any_signal_l.Logs logs))
()
in
{ emit; clock = Clock.Main.get () }