os_sup
os_sup
模块
os_sup
模块摘要
OS系统消息的接口
描述
os_sup
是一个在Erlang运行时系统中提供从操作系统到错误记录器的消息传递服务的进程。它是OS_Mon应用程序的一部分,请参阅os_mon(6)
。适用于Solaris和Windows。
从操作系统收到的消息导致调用用户定义的回调函数。此功能可以执行任何必要的过滤和格式化,然后部署适合用户应用程序的任何类型的日志记录。
Solaris操作
从syslog-daemon中检索Solaris(SunOS 5.x)消息syslogd
。
启用服务包括需要root权限的操作,例如更改可执行二进制文件的所有权和文件权限,以及创建配置文件的修改副本syslogd
。何时os_sup
终止,服务必须禁用,这意味着必须恢复原始配置。启用/禁用可以在外部或内部完成os_sup
,见Configuration
下文。
警告
此进程无法在同一硬件上的多个实例中运行。os_sup
只有当两个或更多Erlang节点在同一台计算机上执行时,OS_Mon必须配置为在一个节点上启动。
未定义接收事件的格式。
窗口操作
从事件日志文件中检索Windows消息。
该nteventlog
模块用于实现os_sup
。看nteventlog(3)
。请注意,nteventlog
不需要使用启动功能,在这种情况下,过程作为OS_Mon监督树的一部分自动启动。
操作系统消息被格式化为一个元组{Time, Category, Facility, Severity, Message}
:
Time = {MegaSecs, Secs, MicroSecs}
BIF返回的时间戳now()
。
Category = string()
通常的一个"System"
,"Application"
或"Security"
。请注意,NT事件日志查看器有另一个类别的概念,在大多数情况下,它是完全没有意义的,因此不会导入Erlang。这里所谓的类别是正常NT系统中发生的三类主要事件之一。
Facility = string()
消息的来源,通常是生成它的应用程序的名称。这可能几乎是任何字符串。当匹配来自某些应用程序的消息时,可能必须考虑应用程序的版本号。这是NT事件查看器称为“源”的内容。
Severity = string()
“错误”,“警告”,“信息”,“Audit_Success”,“Audit_Faulure”之一,或者在当前未知的Windows NT版本为“Severity_Unknown”的情况下。
Message = string()
格式与NT事件日志查看器中的格式完全相同。二进制数据不会导入Erlang。
配置
os_sup_mfa = {Module, Function, Args}
要使用的回调函数。Module
和Function
是原子并且Args
是术语列表。当Msg
收到OS消息时,该函数被调用为apply(Module, Function, [Msg | Args])
。
默认值是{os_sup, error_report, [Tag]}
将事件发送到错误记录器的error_logger:error_report(Tag, Msg)
...Tag
的价值os_sup_errortag
见下文。
os_sup_errortag = atom()
此参数定义使用默认回调函数向错误记录器发送消息时使用的错误报告类型。默认值是std_error
,这意味着事件由标准事件处理程序处理。
os_sup_enable = bool()
仅限Solaris。定义是否应该在(true
)或outside(false
)内启用(和禁用)服务os_sup
。出于向后兼容性的原因,默认是true
。建议的值是false
Erlang仿真器通常不应该使用root
权限运行,这是启用服务所需的。
os_sup_own = string()
仅限Solaris。定义包含备份副本和Erlang特定配置文件的目录syslogd
,以及用于接收消息的命名管道syslogd
。默认是"/etc"
。
os_sup_syslogconf = string()
只有Solaris。定义配置文件的全名。syslogd
默认为"/etc/syslog.conf"
...
输出
enable() -> ok | {error, Res}enable(Dir, Conf) -> ok | {error, Error}
类型
启用os_sup
服务。只需要在Solaris上。
如果配置参数os_sup_enable
是false
,此函数由os_sup
的值os_sup_own
和os_sup_syslogconf
作为争论。
如果os_sup_enable
是true
,则必须在
OS_Mon / os_sup
启动之前
调用此函数。Dir
定义包含备份副本和Erlang特定配置文件的目录syslogd
,以及用于接收消息的命名管道syslogd
。默认为"/etc"
。Conf
定义配置文件的全名syslogd
。默认是"/etc/syslog.conf"
。
结果在操作系统调用:
<PRIVDIR>/bin/mod_syslog otp Dir Conf
这里<PRIVDIR>是privOS_Mon的目录code:priv_dir(os_mon)。
如果这会产生预期结果“0”,则返回ok;如果产生其他结果,则返回{error,Res}。
注
此函数需要根特权才能成功。
disable() -> ok | {error, Res}disable(Dir, Conf) -> ok | {error, Error}
类型
禁用os_sup
服务。只需要在Solaris上。
如果配置参数os_sup_enable为false,则此函数由os_sup自动调用,使用与调用enable / 2时相同的参数。
如果os_sup_enable为true,则必须在OS_Mon / os_sup停止后调用此函数。 Dir定义了包含syslogd的备份副本和Erlang特定配置文件的目录,以及一个用于从syslogd接收消息的命名管道。 默认为“/ etc”。 Conf定义了syslogd的配置文件的全名。 默认是“/etc/syslog.conf”。
结果在操作系统调用:
<PRIVDIR>/bin/mod_syslog nootp Dir Conf
其中<PRIVDIR>是OS_Mon的priv目录,代码:priv_dir(os_mon)。
如果这会产生预期结果“0”,则返回ok ;如果产生其他结果,则返回{error,Res}。
注
此函数需要根特权才能成功。
另见
error_logger(3)
,os_mon(3)
syslogd(1M)
,syslog.conf(4)
在Solaris文档中。