zoukankan      html  css  js  c++  java
  • syslogd日志简介***

    1、什么是syslogd 
    syslogd是一个守护进程,这个守护进程提供了一个记录特殊事件和消息的标准机制。通俗的讲,syslogd守护进程用于解决系统守护进程的日志记录问题。 
    syslogd记录的日志文件都是文本文件,一般都放在/var/log目录中。标准C函数库提供了syslogd的接口。 
    这里写图片描述
    openlog是可选的,如果不调用openlog,则在第一次调用syslog时,自动调用openlog。 

    openlog函数:

    第1个参数为ident,该参数常用来表示信息的来源。ident指向的字符信息会被固定地添加在每行日志的前面。

    第2个参数 option用于指定openlog函数和接下来调用的syslog函数的控制标志。option的取值情况如表8.5所示,可以单独取其中的某个值,也 可以通过与运算来获得多种特性。

    第3个参数为facility,这个要与syslogd守护进程的配置文件对应,日志信息会写入syslog.conf文 件指定的位置。
    openlog的参数: 
    这里写图片描述
    syslog的参数: 
    这里写图片描述

    例:调用syslogd的接口函数,向日志文件里面写入信息进行测试。 
    这里写图片描述

    总结:上述内容只是从应用层面上介绍了一下syslogd的函数调用机制。我们还可以配置/ect/syslog.conf来设置生日志的位置和相关信息。

    守护进程日志的实现

    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

  • 相关阅读:
    视差滚动(Parallax Scrolling)插件补充
    10个最佳的触控手式的JavaScript框架(转)
    50个必备的实用jQuery代码段(转)
    PhoneGap开发不可或缺的五件装备
    优化移动网站的9大窍门(转)
    WSADATA
    htons
    INADDR_ANY
    SOCKADDR_IN
    mysql_query()与mysql_real_query()
  • 原文地址:https://www.cnblogs.com/jiangzhaowei/p/9102528.html
Copyright © 2011-2022 走看看