`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`