type level =
| App
| Error
| Warning
| Info
| Debug
val level : unit -> level option
val set_level : level option -> unit
val level_to_string : level option -> string
val level_of_string : string -> (level option, [ `Msg of string ]) r
val app : 'a msgf -> unit
val err : 'a msgf -> unit
val warn : 'a msgf -> unit
val info : 'a msgf -> unit
val debug : 'a msgf -> unit
val on_error_msg : ?level:level -> use:(unit -> 'a) -> 'a result -> 'a
val err_count : unit -> int
val warn_count : unit -> int