# Module Syslog

    module Syslog: sig .. end

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 `Core_extended.Std.Logger` instead.

    module Open_option: sig .. end

    module Facility: sig .. end

Types of messages

    module Level: sig .. 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.