文档介绍:1 linux 日志机制 syslogd 总结引用自: http://blog./uid-26675482-id- 守护进程日志的实现 syslogd 守护进程用于解决守护进程的日志记录问题,而日志信息保存的位置和记录的信息级别是在 syslogd 守护进程的配置文件中设定的。守护进程日志主要涉及 3 个函数,分别是 openlog 、 syslog 和 closelog 函数。表 所示为这 3 个函数的具体信息。表 openlog 、 syslog 和 closelog 函数头文件<> 函数形式 void openlog(const char *ident, int option, int facility); void syslog(int priority, const char *format, ...); void closelog(void); 说明: 调用 openlog 是可选择的。如果不调用 openlog ,则在第一次调用 syslog 时,自动调用 openlog 。调用 closelog 也是可选择的,它只是关闭被用于与 syslog 守护进程通信的描述符。调用 openlog 使我们可以指定一个 ident , 以后,此 ident 将被加至每则记录消息中。 ident 一般是程序的名称( 例如, cron , ine 等) openlog 函数中的第 1 个参数为 ident , 该参数常用来表示信息的来源。 ident 指向的字符信息会被固定地添加在每行日志的前面。第2 个参数 option 用于指定 openlo g 函数和接下来调用的 syslog 函数的控制标志。 option 的取值情况如表 所示, 可以单独取其中的某个值,也可以通过与运算来获得多种特性。第3 个参数为 facility , 这个要与 syslogd 守护进程的配置文件对应,日志信息会写入 文件指定的位置。表 openlong 函数中的 option 取值表参数说明 LOG_CONS 如果将信息发送给 syslogd 守护进程时发生错误,直接将相关信息输出到终端 LOG_NDELAY 立即打开与系统日志的连接(通常情况下,只有在产生第一条日志信息的情况下才会打开与日志系统的连接) LOG_NOWAIT 在记录日志信息时,不等待可能的子进程的创建 LOG_ODELAY 类似于 LOG_NDELAY 参数,与系统日志的连接只有在 syslog 函数调用时才会创建参数说明 LOG_PERROR 在将信息写入日志的同时,将信息发送到标准错误输出( -2001 不支持该参数) LOG_PID 每条日志信息中都包括进程号参数 facility 的取值如表 所示。这些值与前面 中的 facility 是存在对应关系的。表 openlog 函数参数 facility 取值 facility 参数 中对应的 facility 取值 LOG_KERN kern LOG_USER user LOG_MAIL mail LOG_DAEMON daemon LOG_AUTH auth LOG_SYSLOG syslog LOG_LPR lpr LOG_NEWS news LOG_UUCP uucp LOG_CRON cron LOG_AUTHPRIV authpriv LOG_FTP ftp LOG_LOCAL0 ~ LOG_LOCAL7 local0 ~ local7 syslog 函数中的第一个参数 priority 表示消息的级别。与 openlog 函数中的 facility 参数类似, priority 参数与 level 也存在对应的关系。 priority 取值和对应关系如表 所示。表 syslog 函数参数 priority 取值 priority 参数 中对应的 level 取值 LOG_EMERG emerg LOG_ALERT alert LOG_CRIT crit LOG_ERR err LOG_WARNING warning LOG_NOTICE notice LOG_INFO info LOG_DEBUG debug syslog 函数的第二个参数为消息的格式,之后是格式对应的参数。函数的使用类似于 printf 函数。参考代码如下: 点击( 此处) 折叠或打开 1. #include < syslog .h> 2. 3. int main ( int argc , char ** argv ) 4.{ 5.