linux syslog 调用接口

在实际的使用过程中,我们可以通过配置文件和查看相应的日志文件来使用syslog。然而,在许多应用场景下,我们往往需要通过程序产生输出信息并进行记录,也就是说要把一些信息写成日志文件,正常情况下运行程序的人不用关心日志里的内容,只有在出现问题的时候才会查看日志文件里的内容以确定问题所在。因此,下面将详细介绍如何通过syslog日志系统提供的API调用接口,来使用程序实现对syslog的使用。主要涉及3个函数,分别是 openlog、 syslog、closelog 函数。关于syslog守护进程参考http://blog.csdn.net/u011641885/article/details/48262411


void openlog(const char *ident, int option, int facility);
函数说明:打开日志设备,以供读取和写入,与文件系统调用的open类似;调用openlog是可选择的。如果不调用openlog,则在第一次调用syslog时,自动调用openlog。
参数说明:
ident:是一个标记,ident 所表示的字符串将固定的加在每行日志的前面一标识这个日志,通常就写成当前程序的名称以作标记。

option:
指定openlog函数和接下来调用的syslog函数的控制标志。可以取以下值:
LOG_CONS		如果将信息发送给 syslogd 守护进程时发生错误,直接将相关信息输出到终端
LOG_NDELAY		立即打开与系统日志的连接(通常情况下,只有在产生第一条日志信息的情况下才会打开与日志系统的连接)
LOG_ODELAY      类似于 LOG_NDELAY 参数,与系统日志的连接只有在 syslog 函数调用时才会创建
LOG_PERROR		在将信息写入日志的同时,将信息发送到标准错误输出
LOG_PID			每条日志信息中都包含进程号

facility :指定记录消息程序的类型,与 syslogd 守护进程的配置文件 syslog.conf 中的 facility 对应。可取如下值:
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		本地使用保留

void syslog(int priority, const char *format, ...);
函数说明:写入日志,与文件系统调用 write 类似。
priority:表示消息的级别,与 syslogd 守护进程的配置文件 syslog.conf 中的 level 对应。可取如下值:
LOG_EMERG					紧急情况
LOG_ALERT					应该被立即改正的问题,如系统数据库破坏
LOG_CRIT					重要情况,如硬盘错误
LOG_ERR						错误
LOG_WARNING					警告信息
LOG_NOTICE					不是错误情况,但是可能需要处理
LOG_INFO					情报错误
LOG_DEBUG					包含情报的信息,通常指在调试一个程序时使用		

void closelog();
函数说明:关闭日志设备,与文件系统调用的close类似;调用closelog也是可选择的,它只是关闭被用于与syslog守护进程通信的描述符。


应用示例:

#include <syslog.h>

int main(int argc, char **argv){
	//写入日志(自动调用 openlog)
	syslog(LOG_ERR | LOG_USER,"test - %m\n");
	//打开日志设备
	openlog("SyslogTest",LOG_CONS | LOG_PID,0);
	//写入日志
	syslog(LOG_DEBUG,"This is a syslog test message generated by program '%s'\n",argv[0]);
	//关闭日志设备
	closelog();
	return 0;	
}
执行结果



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值