UNIX环境高级编程之syslog

产生日志消息的方法

  1. 内核程序可以调用log函数记日志. 任何用户进程可以打开并读取/dev/klog设备读取这些消息
  2. 大多数用户进程,调用syslog函数产生日志消息. 这使得消息发送到UNIX域数据报套接字/dev/log
  3. 用户进程发送日志消息到UDP端口514

日志消息存放地址

通常syslogd守护进程会读取一个配置文件(/etc/syslog.conf)来决定不同类型的消息应该送到何处.

syslog相关函数

#include <syslog.h>

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

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

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

void closelog();

/* 返回旧的日志优先级屏蔽值 */
int setlogmask(int maskpriority);

openlog说明

  • 调用openlog是可选择的,若不调用openlog则第一次调用syslog时自动调用syslog
  • 参数ident一般为程序名称.可以用来表示是哪个进程发送的消息日志,openlog会将它加到每则日志消息中
  • option参数是指定许多选项的位屏蔽

    options说明
    LOG\_CONS若无法将信息发送到syslogd,则直接输出到控制台
    LOG\_NDELAY立即打开与syslogd的连接,默认为第一次写日志时才建立连接
    LOG\_ODELAY在就第一条消息时才建立与syslogd的连接
    LOG\_PERROR输出到stderr中
    LOG\_NOWAITsyslog记录日志时可能会fork子进程,该选项表示不wait子进程退出
    LOG\_PID每条消息都记录下进程ID
  • 参数facility说明

    参数facility指明了默认的消息种类. 消息种类会根据syslogd的配置文件来分发到不同位置

    facility说明
    LOG\_AUTH认证相关的信息,入login,su,getty产生的信息
    LOG\_CRON由cron或at产生的信息
    LOG\_DAEMON系统守护进程产生的消息
    LOG\_FTPFTP守护进程产生的消息
    LOG\_KERN内核产生的消息
    LOG\_LOCAL0 – LOG\_LOCAL7保留本地使用
    LOG\_LPR行打印系统产生的消息
    LOG\_MAIL邮件系统产生的消息
    LOG\_NEWSUsenet网络新闻系统产生的消息
    LOG\_SYSLOGsyslogd本身产生的消息
    LOG\_USER来自其他用户进程的消息(默认)
    LOG\_UUCPUUCP系统产生的消息

syslog函数豁免

参数priority可以用来指明消息的 种类等级

即priority的可选择同时包含了openlog中facility参数的可选择和level可选值

facility说明
LOG\_AUTH认证相关的信息,入login,su,getty产生的信息
LOG\_CRON由cron或at产生的信息
LOG\_DAEMON系统守护进程产生的消息
LOG\_FTPFTP守护进程产生的消息
LOG\_KERN内核产生的消息
LOG\_LOCAL0 – LOG\_LOCAL7保留本地使用
LOG\_LPR行打印系统产生的消息
LOG\_MAIL邮件系统产生的消息
LOG\_NEWSUsenet网络新闻系统产生的消息
LOG\_SYSLOGsyslogd本身产生的消息
LOG\_USER来自其他用户进程的消息(默认)
LOG\_UUCPUUCP系统产生的消息
  
LOG\_EMERG紧急状态(系统不可用)
LOG\_ALTERT必须立即修复的状态
LOG\_CRIT严重状态(例如硬件故障)
LOG\_ERR出错信息
LOG\_WARNING警告信息
LOG\_NOTICE正常,但重要的消息
LOG\_INFO消息性质的信息
LOG\_DEBUG调试信息

closelog说明

closelog也是可选的,只有在调用openlog后才需要调用. 它用于关闭曾被用于与syslogd守护进程通信的描述符

setlogmask

setlogmask函数用于设置进程的日志优先级屏蔽字.

只有在记录的消息优先级高于屏蔽字中的级别才会被记录下来.

设置屏蔽字为0,并不产生任何作用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值