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