sig   type level = App | Error | Warning | Info | Debug   val level : unit -> B0.Log.level option   val set_level : B0.Log.level option -> unit   val pp_level : B0.Log.level B0.Fmt.t   val level_to_string : B0.Log.level option -> string   val level_of_string :     string -> (B0.Log.level option, [ `Msg of string ]) Pervasives.result   type ('a, 'b) msgf =       (?header:string ->        ('a, Format.formatter, unit, 'b) Pervasives.format4 -> 'a) ->       'b   type 'a log = ('a, unit) B0.Log.msgf -> unit   val msg : B0.Log.level -> 'B0.Log.log   val maybe : B0.Log.level option -> 'B0.Log.log   val app : 'B0.Log.log   val err : 'B0.Log.log   val warn : 'B0.Log.log   val info : 'B0.Log.log   val debug : 'B0.Log.log   val kmsg : (unit -> 'b) -> B0.Log.level -> ('a, 'b) B0.Log.msgf -> 'b   val on_error :     ?level:B0.Log.level ->     ?header:string ->     pp:'B0.Fmt.t -> use:('-> 'a) -> ('a, 'b) Pervasives.result -> 'a   val on_error_msg :     ?level:B0.Log.level ->     ?header:string ->     use:(unit -> 'a) -> ('a, [ `Msg of string ]) Pervasives.result -> 'a   val time :     ?level:B0.Log.level ->     ('-> (('b, Format.formatter, unit, 'a) Pervasives.format4 -> 'b) -> 'a) ->     ('-> 'a) -> '-> 'a   val err_count : unit -> int   val warn_count : unit -> int   type kmsg = {     kmsg : ''b. (unit -> 'b) -> B0.Log.level -> ('a, 'b) B0.Log.msgf -> 'b;   }   val set_kmsg : B0.Log.kmsg -> unit end