syslog生命周期

  1. 一:生命周期
  2. (1)系统中存在syslog服务(或者是rsyslog),该服务有一个配置文件,配置文件命名为syslog.conf(rsyslog.conf)。
  3. syslog.conf形式:
  4. auth,authpriv.*            /var/log/auth.log
    *.*;auth,authpriv.none        -/var/log/syslog
    #cron.*                /var/log/cron.log
    daemon.*            -/var/log/daemon.log
    kern.*                -/var/log/kern.log
    lpr.*                -/var/log/lpr.log
    mail.*                -/var/log/mail.log
    user.*                -/var/log/user.log
    前面第一个字段是facility,消息类型;“.”之后的字段是priority,优先级。形式为facility. priority。后面是写入到哪个文件。
  5. (2)linux有openlog等系统调用,这类系统背后打开了与syslog服务交流的通道。
  6. #include <syslog.h>//头文件
  7. void openlog (char*ident,int optionint facility);
  8. void syslog(int prioritychar*format,……);
  9. void closelog();

  1. #include <syslog.h>
  2. int main(int argc, char**argv) {
  3.     openlog("zooyo", LOG_CONS| LOG_PID,LOG_FTP);//LOG_FTP指明为FTP文件传输协议,即facility
  4.     syslog(LOG_INFO,                                                              //LOG_INFO指明为优先级,即priority
  5.            "This is a syslog test message generated by program %sn", //消息
  6.            argv[0]);
  7.     closelog();
  8.     return 0;
  9. }
  10. 调用之后,syslog服务读取配置文件,根据不同的类型和优先级,写入各个不同的Log文件。

log文件内容形式为

Oct 10 23:54:32 kali zooyo[31067]: This is a syslog test message
Oct 10 23:57:08 kali zooyo[31138]: This is a syslog test message
Oct 11 00:00:10 kali zooyo[31201]: This is a syslog test message!


openlog函数:

第一个参数ident将是一个标记,ident所表示的字符串将固定地加在每行日志的前面以标识这个日志,通常就写成当前程序的名称以作标记。

第二个参数option是下列值取与运算的结果:
LOG_CONS        直接写入系统控制台,如果有一个错误,同时发送到系统日志记录。
LOG_NDELAY    立即打开连接(通常,打开连接时记录的第一条消息)。
LOG_NOWAIT   不要等待子进程,因为其有可能在记录消息的时候就被创建了(GNU C库不创建子进程,所以该选项在Linux上没有影响。)
LOG_ODELAY    延迟连接的打开直到syslog函数调用。(这是默认情况下,需要没被指定的情况下。)
LOG_PERROR   (不在SUSv3情况下)同时输出到stderr(标准错误文件)。
LOG_PID          包括每个消息的PID。

第三个参数facility是用来指定记录消息程序的类型。它让指定的配置文件,将以不同的方式来处理来自不同方式的消息。

它的值可能为 LOG_KERN、LOG_USER、LOG_MAIL、LOG_DAEMON、LOG_AUTH、LOG_SYSLOG、LOG_LPR、LOG_NEWS、LOG_UUCP、LOG_CRON 或 LOG_AUTHPRIV。

LOG_AUTH ——认证系统:login、su、getty等 
LOG_AUTHPRIV ——同LOG_AUTH,但只登录到所选择的单个用户可读的文件中 
LOG_CRON           ——cron守护进程 
LOG_DAEMON       ——其他系统守护进程,如routed 
LOG_FTP ——文件传输协议:ftpd、tftpd 
LOG_KERN ——内核产生的消息 
LOG_LPR ——系统打印机缓冲池:lpr、lpd 
LOG_MAIL ——电子邮件系统 
LOG_NEWS ——网络新闻系统 
LOG_SYSLOG ——由syslogd(8)产生的内部消息 
LOG_USER ——随机用户进程产生的消息 
LOG_UUCP ——UUCP子系统 
LOG_LOCAL0~LOG_LOCAL7 ——为本地使用保留 

Syslog为每个事件赋予几个不同的优先级: 
LOG_EMERG ——紧急情况 
LOG_ALERT ——应该被立即改正的问题,如系统数据库破坏 
LOG_CRIT ——重要情况,如硬盘错误 
LOG_ERR ——错误 
LOG_WARNING ——警告信息 
LOG_NOTICE ——不是错误情况,但是可能需要处理 
LOG_INFO ——情报信息 
LOG_DEBUG ——包含情报的信息,通常旨在调试一个程序时使用





你可能感兴趣的:(linux)