sig
  type level = Quiet | App | Error | Warning | Info | Debug
  val level : unit -> B0_std.Log.level
  val set_level : B0_std.Log.level -> unit
  val pp_level : B0_std.Log.level B0_std.Fmt.t
  val level_to_string : B0_std.Log.level -> string
  val level_of_string :
    string -> (B0_std.Log.level, string) Stdlib.Pervasives.result
  type ('a, 'b) msgf =
      (?header:string ->
       ('a, Stdlib.Format.formatter, unit, 'b) Stdlib.format4 -> 'a) ->
      'b
  type 'a log = ('a, unit) B0_std.Log.msgf -> unit
  val msg : B0_std.Log.level -> 'B0_std.Log.log
  val quiet : 'B0_std.Log.log
  val app : 'B0_std.Log.log
  val err : 'B0_std.Log.log
  val warn : 'B0_std.Log.log
  val info : 'B0_std.Log.log
  val debug : 'B0_std.Log.log
  val kmsg :
    (unit -> 'b) -> B0_std.Log.level -> ('a, 'b) B0_std.Log.msgf -> 'b
  val if_error :
    ?level:B0_std.Log.level ->
    ?header:string -> use:'-> ('a, string) Stdlib.Pervasives.result -> 'a
  val warn_if_error :
    ?header:string -> use:'-> ('a, string) Stdlib.Pervasives.result -> 'a
  val if_error_pp :
    ?level:B0_std.Log.level ->
    ?header:string ->
    'B0_std.Fmt.t -> use:'-> ('a, 'b) Stdlib.Pervasives.result -> 'a
  val time :
    ?level:B0_std.Log.level ->
    ('->
     (('b, Stdlib.Format.formatter, unit, 'a) Stdlib.format4 -> 'b) -> 'a) ->
    (unit -> 'a) -> 'a
  val err_count : unit -> int
  val warn_count : unit -> int
  type kmsg = {
    kmsg :
      ''b.
        (unit -> 'b) -> B0_std.Log.level -> ('a, 'b) B0_std.Log.msgf -> 'b;
  }
  val kmsg_nop : B0_std.Log.kmsg
  val kmsg_default : B0_std.Log.kmsg
  val set_kmsg : B0_std.Log.kmsg -> unit
end