Unix系统中的syslogd守护进程通常由某个系统初始化脚本启动,而且在系统工作期间一直运行。
源自Berkeley的syslogd实现在启动时执行以下步骤。
(1)读取配置文件。通常为/etc/syslog.conf的配置文件指定本守护进程可能收取的各种日志消息,应该如何处理。
(2)创建一个Unix域数据报套接字,给它捆绑路径名/var/run/log
(3)创建一个UDP套接字,给它捆绑端口514。
(4)打开路径名/dev/klog。
一、syslog函数
#include <syslog.h> void syslog(int prioriry, const char *message, ...); priority:级别level和设施facility两者的组合 message参数类似printf的格式串,不过增加了%m,它将被替换成与当前errno值对应的出错消息。
日志消息的level可以是0~7,他们按从高到低的顺序排列的。如果发送者未指定level值,那就默认为LOG_NOTICE。
日志消息包含一个用于标识消息发送进程类型的facility。默认LOG_USER
举例来说,当rename意外失败时,守护进程可以执行以下调用:
syslog(LOG_INFO|LOG_LOCAL2, "rename(%s, %s):%m", file1, file2);
#include <syslog.h> void openlog(cosnt char *ident, int options, int facility); void closelog(void);
ident:有syslog关于每个日志消息之前的字符串。通常的值是程序名
options:一个或多个常值的逻辑或构成
facility:
options的参数