os_sup
is a process providing a message passing service
from the operating system to the error logger in the Erlang
runtime system. It is part of the OS_Mon application, see
os_mon(6). Available for
Solaris and Windows.
Messages received from the operating system results in an user defined callback function being called. This function can do whatever filtering and formatting is necessary and then deploy any type of logging suitable for the user's application.
The Solaris (SunOS 5.x) messages are retrieved from
the syslog-daemon, syslogd
.
Enabling the service includes actions which require root
privileges, such as change of ownership and file privileges of an
executable binary file, and creating a modified copy of
the configuration file for syslogd
. When os_sup
is
terminated, the service must be disabled, meaning the original
configuration must be restored. Enabling/disabling can be done
either outside or inside os_sup
, see
Configuration below.
This process cannot run in multiple instances on the same
hardware. OS_Mon must be configured to start |
The format of received events is not defined.
The Windows messages are retreived from the eventlog file.
The nteventlog
module is used to implement os_sup
.
See nteventlog(3). Note
that the start functions of nteventlog
does not need to be
used, in this case the process is started automatically as part of
the OS_Mon supervision tree.
OS messages are formatted as a tuple
{Time, Category, Facility, Severity, Message}
:
Time = {MegaSecs, Secs, MicroSecs}
now()
.Category = string()
"System"
, "Application"
or
"Security"
. Note that the NT eventlog viewer has
another notion of category, which in most cases is totally
meaningless and therefore not imported into Erlang. What is
called a category here is one of the main three types of
events occuring in a normal NT system.Facility = string()
Severity = string()
"Error"
, "Warning"
,
"Informational"
, "Audit_Success"
,
"Audit_Faulure"
or, in case of a currently unknown
Windows NT version "Severity_Unknown"
.Message = string()
os_sup_mfa = {Module, Function, Args}
Module
and
Function
are atoms and Args
is a list of terms.
When an OS message Msg
is received, this function is
called as apply(Module, Function, [Msg | Args])
.{os_sup, error_report, [Tag]}
which will
send the event to the error logger using
error_logger:error_report(Tag, Msg). Tag
is the value of
os_sup_errortag
, see below.os_sup_errortag = atom()
std_error
, which means the events
are handled by the standard event handler.os_sup_enable = bool()
true
) or outside (false
)
os_sup
. For backwards compatibility reasons,
the default is true
. The recommended value is
false
, as the Erlang emulator should normally not be
run with root
privileges, as is required for enabling
the service.os_sup_own = string()
syslogd
, and a named pipe to receive the messages
from syslogd
. Default is "/etc"
.os_sup_syslogconf = string()
syslogd
. Default is "/etc/syslog.conf"
.enable() -> ok | {error, Res}
enable(Dir, Conf) -> ok | {error, Error}
Types:
Dir = Conf = Res = string()
Enables the os_sup
service. Needed on Solaris only.
If the configuration parameter os_sup_enable
is
false
, this function is called automatically by
os_sup
, using the values of os_sup_own
and
os_sup_syslogconf
as arguments.
If os_sup_enable
is true
, this function must
be called before OS_Mon/os_sup
is started.
Dir
defines the directory which contains the backup
copy and the Erlang specific configuration files for
syslogd
, and a named pipe to receive the messages
from syslogd
. Defaults to "/etc"
. Conf
defines the full name of the configuration file for
syslogd
. Default is "/etc/syslog.conf"
.
Results in a OS call to:
<PRIVDIR>/bin/mod_syslog otp Dir Conf
where <PRIVDIR>
is the priv
directory of
OS_Mon, code:priv_dir(os_mon)
.
Returns ok
if this yields the expected result
"0"
, and {error, Res}
if it yields anything
else.
This function requires root privileges to succeed. |
disable() -> ok | {error, Res}
disable(Dir, Conf) -> ok | {error, Error}
Types:
Dir = Conf = Res = string()
Disables the os_sup
service. Needed on Solaris only.
If the configuration parameter os_sup_enable
is
false
, this function is called automatically by
os_sup
, using the same arguments as when
enable/2
was called.
If os_sup_enable
is true
, this function must
be called after OS_Mon/os_sup
is stopped.
Dir
defines the directory which contains the backup
copy and the Erlang specific configuration files for
syslogd
, and a named pipe to receive the messages
from syslogd
. Defaults to "/etc"
. Conf
defines the full name of the configuration file for
syslogd
. Default is "/etc/syslog.conf"
.
Results in a OS call to:
<PRIVDIR>/bin/mod_syslog nootp Dir Conf
where <PRIVDIR>
is the priv
directory of
OS_Mon, code:priv_dir(os_mon)
.
Returns ok
if this yields the expected result
"0"
, and {error, Res}
if it yields anything
else.
This function requires root privileges to succeed. |