sig
  module Client :
    sig
      type t
      type opt = [ `No_delay | `No_remote | `Stderr ]
      val create :
        ident:string ->
        facility:string -> ?opts:Asl.Client.opt list -> unit -> Asl.Client.t
    end
  module Message :
    sig
      type t
      type ty = [ `Msg ]
      val create :
        ?ty:Asl.Message.ty ->
        ?time:string ->
        ?host:string ->
        ?sender:string ->
        ?facility:string ->
        ?pid:string ->
        ?uid:string ->
        ?gid:string ->
        ?level:string ->
        ?msg:string -> ?extra:(string * string) list -> unit -> Asl.Message.t
    end
  type level =
      [ `Alert | `Crit | `Debug | `Emerg | `Err | `Info | `Notice | `Warning ]
  val log :
    ?client:Asl.Client.t -> Asl.Message.t -> Asl.level -> string -> unit
end