syslog、openlog、closelog 或 setlogmask 子例程
用途
控制系统日志。
库
标准 C 库 (libc.a)
语法
#include < syslog.h >
void openlog ( ID, LogOption, Facility) const char *ID; int LogOption, Facility;
void syslog ( Priority, 值, ... ) int 优先级; const char *Value;
void closelog ()
int setlogmask( MaskPriority) int MaskPriority;
void bsdlog (Priority, Value ,...) int 优先级; const char *Value;
描述
syslog 子例程将消息写入由 syslogd 命令维护的系统日志。
此消息类似于 printf fmt 字符串,但 %m 被替换为从 errno 全局变量获取的当前错误消息。 如果需要,可以将尾部换行符添加到消息中。
消息由 syslogd 命令读取并写入系统控制台或日志文件,或转发到相应主机上的 syslogd 命令。
如果需要特殊处理,那么可以使用 openlog 子例程来初始化日志文件。
使用指示每个消息的 优先级 类型的代码对这些消息进行标记。 优先级 编码为 设施,用于描述生成消息的系统部分,并作为指示消息严重性的级别。
如果 syslog 子例程无法将消息传递到 syslogd 命令,那么它会将消息写入 /dev/console 文件。 已设置 LOG_CONS 选项。
closelog 子例程关闭日志文件。
setlogmask 子例程使用 MaskPriority 参数中的位掩码来设置新的日志优先级掩码并返回先前的掩码。
sys/syslog.h 文件中的 LOG_MASK 和 LOG_UPTO 宏用于创建优先级掩码。 使用不允许记录该特定级别消息的优先级掩码调用 syslog 子例程会导致子例程返回而不记录消息。
参数
| 项 | 描述 |
|---|---|
| 标识 | 包含附加到每条消息开头的字符串。 Facility 参数对先前列表中的缺省设施进行编码,以分配给未进行显式设施编码的消息。 |
| LogOption | 指定指示日志记录选项的位字段。 LogOption 的值为:
|
| 程序 | 指定以下哪些值生成了消息:
|
| Priority | 指定生成消息的系统部分,作为级别,指示消息的严重性。 从以下列表中选择严重性级别:
|
| MaskPriority | 对掩码中的位指示的级别启用日志记录,这些位是在未设置位的情况下设置和禁用的。 缺省掩码允许记录所有优先级。 |
| VALUE | 指定 Value 参数中给定的值,并遵循与 printf 子例程 Format 参数相同的语法。 |
示例
- 要记录有关可能的安全违规的错误消息,例如以下内容,请输入:
syslog (LOG_ALERT, "who:internal error 23"); - 要初始化日志文件,设置日志优先级掩码并记录错误消息,请输入:
openlog ("ftpd", LOG_PID, LOG_DAEMON); setlogmask (LOG_UPTO (LOG_ERR)); syslog (LOG_INFO, ""); - 要记录来自系统的错误消息,请输入:
syslog (LOG_INFO | LOG_LOCAL2, "foobar error: %m");