sig
  type level = App | Error | Warning | Info | Debug
  val level : unit -> Topkg.Log.level option
  val set_level : Topkg.Log.level option -> unit
  val level_to_string : Topkg.Log.level option -> string
  val level_of_string :
    string -> (Topkg.Log.level option, [ `Msg of string ]) Topkg.r
  type 'a msgf =
      (?header:string ->
       ('a, Stdlib.Format.formatter, unit) Stdlib.format -> 'a) ->
      unit
  val msg : Topkg.Log.level -> 'Topkg.Log.msgf -> unit
  val app : 'Topkg.Log.msgf -> unit
  val err : 'Topkg.Log.msgf -> unit
  val warn : 'Topkg.Log.msgf -> unit
  val info : 'Topkg.Log.msgf -> unit
  val debug : 'Topkg.Log.msgf -> unit
  val on_error_msg :
    ?level:Topkg.Log.level -> use:(unit -> 'a) -> 'Topkg.result -> 'a
  val err_count : unit -> int
  val warn_count : unit -> int
end