sig
  type level =
    Lwt_log_core.level =
      Debug
    | Info
    | Notice
    | Warning
    | Error
    | Fatal
  type logger = Lwt_log_core.logger
  type section = Lwt_log_core.section
  val string_of_level : level -> string
  val level_of_string : string -> level option
  val load_rules : ?fail_on_error:bool -> string -> unit
  val add_rule : string -> level -> unit
  val append_rule : string -> level -> unit
  val reset_rules : unit -> unit
  module Section :
    sig
      type t = Lwt_log_core.section
      val make : string -> Lwt_log_core.section
      val name : Lwt_log_core.section -> string
      val main : Lwt_log_core.section
      val level : Lwt_log_core.section -> Lwt_log_core.level
      val set_level : Lwt_log_core.section -> Lwt_log_core.level -> unit
      val reset_level : Lwt_log_core.section -> unit
    end
  type template = Lwt_log_core.template
  val render :
    buffer:Buffer.t ->
    template:template ->
    section:section -> level:level -> message:string -> unit
  val location_key : (string * int * int) Lwt.key
  exception Logger_closed
  val make :
    output:(section -> level -> string list -> unit Lwt.t) ->
    close:(unit -> unit Lwt.t) -> logger
  val close : logger -> unit Lwt.t
  val default : logger ref
  val broadcast : logger list -> logger
  val dispatch : (section -> level -> logger) -> logger
  val null : logger
  val console : Lwt_log_core.logger
  val log :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int ->
    ?logger:logger -> level:level -> string -> unit Lwt.t
  val log_f :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int ->
    ?logger:logger ->
    level:level -> ('a, unit, string, unit Lwt.t) format4 -> 'a
  val ign_log :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int ->
    ?logger:logger -> level:level -> string -> unit
  val ign_log_f :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int ->
    ?logger:logger -> level:level -> ('a, unit, string, unit) format4 -> 'a
  val debug :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int -> ?logger:logger -> string -> unit Lwt.t
  val debug_f :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int ->
    ?logger:logger -> ('a, unit, string, unit Lwt.t) format4 -> 'a
  val ign_debug :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int -> ?logger:logger -> string -> unit
  val ign_debug_f :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int ->
    ?logger:logger -> ('a, unit, string, unit) format4 -> 'a
  val info :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int -> ?logger:logger -> string -> unit Lwt.t
  val info_f :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int ->
    ?logger:logger -> ('a, unit, string, unit Lwt.t) format4 -> 'a
  val ign_info :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int -> ?logger:logger -> string -> unit
  val ign_info_f :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int ->
    ?logger:logger -> ('a, unit, string, unit) format4 -> 'a
  val notice :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int -> ?logger:logger -> string -> unit Lwt.t
  val notice_f :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int ->
    ?logger:logger -> ('a, unit, string, unit Lwt.t) format4 -> 'a
  val ign_notice :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int -> ?logger:logger -> string -> unit
  val ign_notice_f :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int ->
    ?logger:logger -> ('a, unit, string, unit) format4 -> 'a
  val warning :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int -> ?logger:logger -> string -> unit Lwt.t
  val warning_f :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int ->
    ?logger:logger -> ('a, unit, string, unit Lwt.t) format4 -> 'a
  val ign_warning :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int -> ?logger:logger -> string -> unit
  val ign_warning_f :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int ->
    ?logger:logger -> ('a, unit, string, unit) format4 -> 'a
  val error :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int -> ?logger:logger -> string -> unit Lwt.t
  val error_f :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int ->
    ?logger:logger -> ('a, unit, string, unit Lwt.t) format4 -> 'a
  val ign_error :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int -> ?logger:logger -> string -> unit
  val ign_error_f :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int ->
    ?logger:logger -> ('a, unit, string, unit) format4 -> 'a
  val fatal :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int -> ?logger:logger -> string -> unit Lwt.t
  val fatal_f :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int ->
    ?logger:logger -> ('a, unit, string, unit Lwt.t) format4 -> 'a
  val ign_fatal :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int -> ?logger:logger -> string -> unit
  val ign_fatal_f :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int ->
    ?logger:logger -> ('a, unit, string, unit) format4 -> 'a
  val raise_error :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int -> ?logger:logger -> string -> 'a
  val raise_error_f :
    ?inspect:'->
    ?exn:exn ->
    ?section:section ->
    ?location:string * int * int ->
    ?logger:logger -> ('a, unit, string, 'any) Stdlib.format4 -> 'a
  val eliom : section
end