zoukankan      html  css  js  c++  java
  • syslog(),closelog()与openlog()--日志操作函数 (2)

    文章出处:http://blog.chinaunix.net/uid-26583794-id-3166083.html

    守护进程日志的实现

    syslogd守护进程用于解决守护进程的日志记录问题,而日志信息保存的位置和记录的信息级别是在syslogd守护进程的配置文件中设定的。守护进程 日志主要涉及3个函数,分别是openlog、syslog和closelog函数。表8.4所示为这3个函数的具体信息。

    表8.4   openlog、syslog和closelog函数

     

    头文件

    <syslog.h>

    函数形式

    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用于指定openlog函数和接下来调用的syslog函数的控制标志。option的取值情况如表8.5所示,可以单独取其中的某个值,也 可以通过与运算来获得多种特性。第3个参数为facility,这个要与syslogd守护进程的配置文件对应,日志信息会写入syslog.conf文 件指定的位置。

    表8.5   openlong函数中的option取值表

    参 数

    说 明

    LOG_CONS

    如果将信息发送给syslogd守护进程时发生错误,直接将相关信息输出到终端

    LOG_NDELAY

    立即打开与系统日志的连接(通常情况下,只有在产生第一条日志信息的情况下才会打开与日志系统的连接)

    LOG_NOWAIT

    在记录日志信息时,不等待可能的子进程的创建

    LOG_ODELAY

    类似于LOG_NDELAY参数,与系统日志的连接只有在syslog函数调用时才会创建

    参 数

    说 明

    LOG_PERROR

    在将信息写入日志的同时,将信息发送到标准错误输出(POSIX.1-2001不支持该参数)

    LOG_PID

    每条日志信息中都包括进程号

     

    参数facility的取值如表8.6所示。这些值与前面syslog.conf中的facility是存在对应关系的。

    表8.6   openlog函数参数facility取值

    facility参数

    syslog.conf中对应的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取值和对应关系如表8.7所示。

    表8.7   syslog函数参数priority取值

    priority参数

    syslog.conf中对应的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. int main(int argc, char **argv

    3.     syslog(LOG_ERR|LOG_USER,"test - %m/n")
    4.     openlog("SyslogTest", LOG_CONS | LOG_PID, 0)
    5.     syslog(LOG_DEBUG,"This is a syslog test message generated by program '%s'/n",argv[0])
    6.     closelog()
    7.     return 0
    8. }

    执行结果:#cat /var/log/syslog

    QQ截图20120408210028

     

     
  • 相关阅读:
    angularJs项目实战!02:前端的页面分解与组装
    angularJs项目实战!01:模块划分和目录组织
    django admin 导出数据简单示例
    django 学习之model操作(想细化)
    6.11大杂烩。。
    InlineModelAdmin对象的学习
    django-salmonella的使用
    python 保留两位小数
    Django 时间与时区设置问题
    Django学习
  • 原文地址:https://www.cnblogs.com/yyxayz/p/4005667.html
Copyright © 2011-2022 走看看