From e9bb76edd1cdcce31f22b45f98c18dd4022e6cce Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Thu, 9 Apr 2026 09:24:13 -0400 Subject: [PATCH] expose Self_debug.level_above --- src/lib/self_debug.ml | 12 ++++++++---- src/lib/self_debug.mli | 5 +++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/lib/self_debug.ml b/src/lib/self_debug.ml index 16bcff89..c47e8247 100644 --- a/src/lib/self_debug.ml +++ b/src/lib/self_debug.ml @@ -16,17 +16,21 @@ let string_of_level = function | Warning -> "warning" | Error -> "error" -let to_stderr ?(min_level = Warning) () : unit = +open struct let[@inline] int_of_level_ = function | Debug -> 0 | Info -> 1 | Warning -> 2 | Error -> 3 - in - let threshold = int_of_level_ min_level in +end + +let level_above ~min_level level : bool = + int_of_level_ level >= int_of_level_ min_level + +let to_stderr ?(min_level = Warning) () : unit = logger := fun level mk_msg -> - if int_of_level_ level >= threshold then ( + if level_above ~min_level level then ( let msg = mk_msg () in Printf.eprintf "[otel:%s] %s\n%!" (string_of_level level) msg ) diff --git a/src/lib/self_debug.mli b/src/lib/self_debug.mli index 55fea086..f084d257 100644 --- a/src/lib/self_debug.mli +++ b/src/lib/self_debug.mli @@ -25,6 +25,11 @@ val logger : logger ref val string_of_level : level -> string (** String representation of a level. *) +val level_above : min_level:level -> level -> bool +(** [level_above ~min_level lvl] is true if messages at level [lvl] should be + logged. + @since NEXT_RELEASE *) + val log : level -> (unit -> string) -> unit (** [log level mk_msg] emits a diagnostic message if the current logger is active. [mk_msg] is called lazily — only if the message will be emitted. *)