`sig
module Priority : sig type t = int val compare : t -> t -> int end
class virtual ['level] prioritizer :
object
method virtual code : 'level -> Priority.t
method virtual tag : 'level -> string
end
class ['level] event :
'level #prioritizer ->
'level ->
string ->
object
method level : 'level
method message : string
method prioritizer : 'level prioritizer
end
class virtual ['a] archiver :
object constraint 'a = 'level #event method virtual emit : 'a -> unit end
class virtual ['c] agent :
'level #prioritizer ->
'level ->
'c list ->
object
constraint 'c = ('level #event as 'd) #archiver
val mutable archivers_ : 'c list
val mutable limit_ : Priority.t
method enabled : 'level -> bool
method private virtual event : 'level -> string -> 'd
method private put :
'a 'b. 'level -> ('d -> 'b) -> ('a, unit, string, 'b) format4 -> 'a
method setlimit : 'level -> unit
end
type invalid = [ `Invalid ]
type fail = [ `Fail ]
type error = [ `Error ]
type warn = [ `Warn ]
type notice = [ `Notice ]
type info = [ `Info ]
type debug = [ `Debug ]
type basic =
[ `Debug | `Error | `Fail | `Info | `Invalid | `Notice | `Warn ]
type enable = [ `All | `None ]
type level =
[ `All
| `Debug
| `Error
| `Fail
| `Info
| `Invalid
| `None
| `Notice
| `Warn ]
end`