expose Self_debug.level_above

This commit is contained in:
Simon Cruanes 2026-04-09 09:24:13 -04:00
parent b766f86019
commit e9bb76edd1
No known key found for this signature in database
GPG key ID: EBFFF6F283F3A2B4
2 changed files with 13 additions and 4 deletions

View file

@ -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
)

View file

@ -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. *)