sig   type level = App | Error | Warning | Info | Debug   val level : unit -> Logs.level option   val set_level : ?all:bool -> Logs.level option -> unit   val pp_level : Format.formatter -> Logs.level -> unit   val level_to_string : Logs.level option -> string   val level_of_string :     string -> (Logs.level option, [ `Msg of string ]) Result.result   type src   val default : Logs.src   module Src :     sig       type t = Logs.src       val create : ?doc:string -> string -> Logs.src       val name : Logs.src -> string       val doc : Logs.src -> string       val level : Logs.src -> Logs.level option       val set_level : Logs.src -> Logs.level option -> unit       val equal : Logs.src -> Logs.src -> bool       val compare : Logs.src -> Logs.src -> int       val pp : Format.formatter -> Logs.src -> unit       val list : unit -> Logs.src list     end   module Tag :     sig       type 'a def       type def_e = Def : 'Logs.Tag.def -> Logs.Tag.def_e       val def :         ?doc:string ->         string -> (Format.formatter -> '-> unit) -> 'Logs.Tag.def       val name : 'Logs.Tag.def -> string       val doc : 'Logs.Tag.def -> string       val printer : 'Logs.Tag.def -> Format.formatter -> '-> unit       val pp_def : Format.formatter -> 'Logs.Tag.def -> unit       val list : unit -> Logs.Tag.def_e list       type t = V : 'Logs.Tag.def * '-> Logs.Tag.t       val pp : Format.formatter -> Logs.Tag.t -> unit       type set       val empty : Logs.Tag.set       val is_empty : Logs.Tag.set -> bool       val mem : 'Logs.Tag.def -> Logs.Tag.set -> bool       val add : 'Logs.Tag.def -> '-> Logs.Tag.set -> Logs.Tag.set       val rem : 'Logs.Tag.def -> Logs.Tag.set -> Logs.Tag.set       val find : 'Logs.Tag.def -> Logs.Tag.set -> 'a option       val get : 'Logs.Tag.def -> Logs.Tag.set -> 'a       val fold : (Logs.Tag.t -> '-> 'a) -> Logs.Tag.set -> '-> 'a       val pp_set : Format.formatter -> Logs.Tag.set -> unit     end   type ('a, 'b) msgf =       (?header:string ->        ?tags:Logs.Tag.set ->        ('a, Format.formatter, unit, 'b) Pervasives.format4 -> 'a) ->       'b   type 'a log = ('a, unit) Logs.msgf -> unit   val msg : ?src:Logs.src -> Logs.level -> 'Logs.log   val app : ?src:Logs.src -> 'Logs.log   val err : ?src:Logs.src -> 'Logs.log   val warn : ?src:Logs.src -> 'Logs.log   val info : ?src:Logs.src -> 'Logs.log   val debug : ?src:Logs.src -> 'Logs.log   val kmsg :     (unit -> 'b) -> ?src:Logs.src -> Logs.level -> ('a, 'b) Logs.msgf -> 'b   val on_error :     ?src:Logs.src ->     ?level:Logs.level ->     ?header:string ->     ?tags:Logs.Tag.set ->     pp:(Format.formatter -> '-> unit) ->     use:('-> 'a) -> ('a, 'b) Result.result -> 'a   val on_error_msg :     ?src:Logs.src ->     ?level:Logs.level ->     ?header:string ->     ?tags:Logs.Tag.set ->     use:(unit -> 'a) -> ('a, [ `Msg of string ]) Result.result -> 'a   module type LOG =     sig       val msg : Logs.level -> 'Logs.log       val app : 'Logs.log       val err : 'Logs.log       val warn : 'Logs.log       val info : 'Logs.log       val debug : 'Logs.log       val kmsg : (unit -> 'b) -> Logs.level -> ('a, 'b) Logs.msgf -> 'b       val on_error :         ?level:Logs.level ->         ?header:string ->         ?tags:Logs.Tag.set ->         pp:(Format.formatter -> '-> unit) ->         use:('-> 'a) -> ('a, 'b) Result.result -> 'a       val on_error_msg :         ?level:Logs.level ->         ?header:string ->         ?tags:Logs.Tag.set ->         use:(unit -> 'a) -> ('a, [ `Msg of string ]) Result.result -> 'a     end   val src_log : Logs.src -> (module Logs.LOG)   type reporter = {     report :       ''b.         Logs.src ->         Logs.level ->         over:(unit -> unit) -> (unit -> 'b) -> ('a, 'b) Logs.msgf -> 'b;   }   val nop_reporter : Logs.reporter   val format_reporter :     ?pp_header:(Format.formatter -> Logs.level * string option -> unit) ->     ?app:Format.formatter -> ?dst:Format.formatter -> unit -> Logs.reporter   val reporter : unit -> Logs.reporter   val set_reporter : Logs.reporter -> unit   val report :     Logs.src ->     Logs.level ->     over:(unit -> unit) -> (unit -> 'b) -> ('a, 'b) Logs.msgf -> 'b   val incr_err_count : unit -> unit   val incr_warn_count : unit -> unit   val pp_print_text : Format.formatter -> string -> unit   val pp_header : Format.formatter -> Logs.level * string option -> unit   val err_count : unit -> int   val warn_count : unit -> int end