Up

module Syslog

: sig

Send log messages via the Unix Syslog interface.

Syslog is great for system daemons that log free-form human readable status messages or other debugging output, but not so great for archiving structured data. Access to read Syslog's messages may also be restricted. syslogd's logs are also not necessarily kept forever. For application level logging consider [root:Core_extended].Std.Logger instead.

#
module Open_option : sig
#
type t =
# | PID
(*Include PID with each message*)
# | CONS
(*Write directly to system console if there is an error while sending to system logger*)
# | ODELAY
(*Delay opening of the connection until syslog is called*)
# | NDELAY
(*No delay opening connection to syslog daemon*)
# | NOWAIT
(*Do not wait for child processes while logging message*)
# | PERROR
#
val t_of_sexp : Sexplib.Sexp.t -> t
#
val sexp_of_t : t -> Sexplib.Sexp.t
end
#
module Facility : sig

Types of messages

#
type t =
# | KERN
(*Kernel messages*)
# | USER
(*Generic user-level message (default)*)
# | MAIL
(*Mail subsystem*)
# | DAEMON
(*System daemons without separate facility value*)
# | AUTH
(*Security/authorization messages (DEPRECATED, use AUTHPRIV)*)
# | SYSLOG
(*Messages generated internally by syslogd*)
# | LPR
(*Line printer subsystem*)
# | NEWS
(*USENET news subsystem*)
# | UUCP
(*UUCP subsystem*)
# | CRON
(*Clock daemon (cron and at)*)
# | AUTHPRIV
(*Security/authorization messages (private)*)
# | FTP
(*FTP daemon*)
# | LOCAL0
# | LOCAL1
# | LOCAL2
# | LOCAL3
# | LOCAL4
# | LOCAL5
# | LOCAL6
# | LOCAL7
#
val t_of_sexp : Sexplib.Sexp.t -> t
#
val sexp_of_t : t -> Sexplib.Sexp.t
end
#
module Level : sig
#
type t =
# | EMERG
(*System is unusable*)
# | ALERT
(*Action must be taken immediately*)
# | CRIT
(*Critical condition*)
# | ERR
(*Error conditions*)
# | WARNING
(*Warning conditions*)
# | NOTICE
(*Normal, but significant, condition*)
# | INFO
(*Informational message*)
# | DEBUG
(*DEBUG < EMERG*)
#
val all : t list
include Core_kernel.Std.Stringable.S with type t := t
#
val t_of_sexp : Sexplib.Sexp.t -> t
#
val sexp_of_t : t -> Sexplib.Sexp.t
#
val compare : t -> t -> int
end
#
val setlogmask : ?allowed_levels:Level.t list -> ?from_level:Level.t -> ?to_level:Level.t -> unit -> unit

All levels in allowed_levels will be allowed, and additionally all ranging from from_level to to_level (inclusive).

Logging functions

#
val openlog : ?id:string -> ?options:Open_option.t list -> ?facility:Facility.t -> unit -> unit

openlog ~id ~options ~facility () opens a connection to the system logger (possibly delayed) using prefixed identifier id, options, and facility.

WARNING: this function leaks the id argument, if provided. There is no way around that if syslog is called in a multi-threaded environment! Therefore it shouldn't be called too often. What for, anyway?

Calling openlog before syslog is optional. If you forget, syslog will do it for you with the defaults.

#
val syslog : ?facility:Facility.t -> ?level:Level.t -> string -> unit

syslog ~facility ~level message logs message using syslog with facility at level.

#
val syslogf : ?facility:Facility.t -> ?level:Level.t -> ('a, unit, string, unit) Pervasives.format4 -> 'a

syslog_printf acts like syslog, but allows printf-style specification of the message.

#
val closelog : unit -> unit

closelog () closes the connection to the syslog daemon.

end