美文网首页日志处理
古老的日志系统Syslog

古老的日志系统Syslog

作者: 码师傅 | 来源:发表于2017-08-22 14:38 被阅读20次

    什么是syslog

    syslog最早是由Eric Allman在自己的邮件系统里设计使用的,后来逐渐发展成为很多类Unix系统的标准日志系统。
    通过syslog,可以让操作系统中的各个程序的日志统一汇聚到一个中心,然后基于这些日志信息可以进行系统运行状态的分析和程序的调试
    现在不通平台上的很多设备,比如打印机,路由器等都在使用syslog这套标准来进行日志的传输和存储

    syslog包含哪些

    syslog由发送接口和服务组成,发送接口是通过shell执行的logger,以及系统编程接口syslog/openlog/closelog

    如何使用syslog

    C语言发送接口

    void openlog(const char *ident, int option, int facility);

    • 创建一个到system logger的连接;可以不掉用该函数,这样在使用syslog的时候会自动调用openlog, indent传入NULL
    • ident:会被自动添加到每一条日志消息的前面,一般设置为程序的名称
    • option:指定一些日志消息的行为,有以下取值,可以通过或的形式组合
      • LOG_CONS:直接输出到系统的console,如果无法发送到system logger的话
      • LOG_NDELAY:立刻建立到system logger的连接
      • LOG_NOWAIT:不等待子进程创建完成就进行输出日志
      • LOG_ODELAY:LOG_NDELAY的相对选项,直到syslogd被调用才会建立连接
      • LOG_PERROR:同时打印到标准错误输出
      • LOG_PID:日志消息包含PID号,对于后台常驻进程比较有用
    • facility:日志源类型,表明该日志产生于系统的哪一类模块
      • LOG_AUTH:认证/安全相关
      • LOG_AUTHPRIV :认证/安全相关(私有)
      • LOG_CRON:定时器
      • LOG_DAEMON:系统守护进程
      • LOG_FTP:FTP守护继承
      • LOG_KERN:内核消息「这个消息不能由用户程序产生」
      • LOG_MAIL:邮件相关
      • LOG_USER:通用的用户相关的日志,如果没有明确,默认使用LOG_USER

    void syslog(int priority, const char *format, ...);

    • 产生一条日志信息发送给system logger
      • priority:日志信息的级别,以下是级别从高到低
        • LOG_EMERG/LOG_ALERT/LOG_CRIT/LOG_ERR/LOG_WARNING/LOG_NOTICE/LOG_INFO/LOG_DEBUG
      • 可以通过setlogmask函数来决定过滤的级别

    void closelog(void);

    • 关闭连接

    void vsyslog(int priority, const char *format, va_list ap);

    • syslog的va_list的版本

    shell发送接口

    logger

    • 查看man手册

    syslog服务

    https://www.pcwdld.com/free-syslog-servers-windows-and-linux

    相关文章

      网友评论

        本文标题:古老的日志系统Syslog

        本文链接:https://www.haomeiwen.com/subject/wnukdxtx.html