sig
  type message = [ `Debug | `Error | `Fatal | `Info | `Warn ] * string
  type size = [ `Kb of int64 | `Mb of int64 | `Unlimited ]
  type 'a t
  type default_t = Logger.message Logger.t
  val create :
    ?max_size:Logger.size ->
    ?mode:Core.Std.Unix.file_perm ->
    ?max_archives:[ `Max of int | `Unlimited ] ->
    ?full_callback:(string Core.Std.Squeue.t -> unit) ->
    ?filter:('-> bool) ->
    message_to_string:('-> string) -> string -> 'Logger.t
  val create_default :
    ?max_size:Logger.size ->
    ?mode:Core.Std.Unix.file_perm ->
    ?max_archives:[ `Max of int | `Unlimited ] ->
    ?full_callback:(string Core.Std.Squeue.t -> unit) ->
    string -> Logger.message Logger.t
  val log : 'Logger.t -> '-> unit
  val filter : 'Logger.t -> ('-> bool) -> unit
  val clear_filter : 'Logger.t -> unit
  val maybe_log : 'Logger.t option -> '-> unit
  val timestamp : unit -> string
end