`sig type log type level = NONE | FATAL | ERROR | WARN | NOTICE | INFO | DEBUG val make_log : string -> BatLogger.log val log_name : BatLogger.log -> string val log_enable : BatLogger.log -> BatLogger.level -> unit val log_level : BatLogger.log -> BatLogger.level val log_enabled : BatLogger.log -> BatLogger.level -> bool type event = string * (string * string) list val log : BatLogger.log -> BatLogger.level -> (unit -> BatLogger.event) -> unit val with_log : BatLogger.log -> BatLogger.level -> (unit -> BatLogger.event) -> ?result:('a -> string) -> (unit -> 'a) -> 'a type formatter = BatLogger.log -> BatLogger.level -> BatLogger.event -> float -> unit val register_formatter : string -> BatLogger.formatter -> unit val unregister_formatter : string -> unit val make_std_formatter : 'a BatIO.output -> BatLogger.formatter val stderr_formatter : BatLogger.formatter val null_formatter : BatLogger.formatter val make_dbg_formatter : 'a BatIO.output -> BatLogger.formatter val dbg_formatter : BatLogger.formatter val init : (string * BatLogger.level) list -> BatLogger.formatter -> unit val init_from_string : string -> BatLogger.formatter -> unit val level_of_name : string -> BatLogger.level val name_of_level : BatLogger.level -> string val format_timestamp : 'a BatIO.output -> float -> unit end`