45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:如何在c语言库中将信息记录至系统日志文件?

如何在c语言库中将信息记录至系统日志文件?

2016-08-26 14:09:10 来源:www.45fan.com 【

如何在c语言库中将信息记录至系统日志文件?

c语言库函数syslog--将信息记录至系统日志文件

参见 《unix 环境高级编程》第13 章 精灵进程

在Linux下有个syslogd的Daemon程式,syslog是个系统管理员必看的档案。因此,如果您的程式有除错或安全讯息要显示,写到syslog是个很好的选择。

syslog有三个函数,使用上,一般您只需要用syslog(...)这个函数即可,一般使用状况下,openlog/closelog是可有可无的。

syslog()中的priority是facility及level的组合,其後参数的用法与printf无异。

范例:
#include
#include
#include
#include

void main(void)
{
if (fork()==0) {
for (;;) {
syslog(LOG_USER|LOG_INFO,"syslog programming test/n");
sleep(10);
}
}
}

检验:
tail -f /var/log/messages

Mar 22 01:42:51 foxman log: syslog programming test
Mar 22 01:43:31 foxman last message repeated 4 times
Mar 22 01:44:31 foxman last message repeated 6 times
Mar 22 01:45:31 foxman last message repeated 6 times
Mar 22 01:46:21 foxman last message repeated 5 times



--------------------------------------------------------------------------------


void openlog( char *ident, int option, int facility)
void syslog( int priority, char *format, ...)
void closelog( void )

option
用於openlog()的option参数可以是以下几个的组合:

LOG_CONS : 如果送到system logger时发生问题,直接写入系统console。
LOG_NDELAY : 立即开启连接(通常,连接是在第一次写入讯息时才打开的)。
LOG_PERROR : 将讯息也同时送到stderr
LOG_PID : 将PID含入所有讯息中

facility
facility参数用来指定何种程式在记录讯息,这可让设定档来设定何种讯息如何处理。

LOG_AUTH : 安全/授权讯息(别用这个,请改用LOG_AUTHPRIV)
LOG_AUTHPRIV : 安全/授权讯息
LOG_CRON : 时间守护神专用(cron及at)
LOG_DAEMON : 其它系统守护神
LOG_KERN : 核心讯息
LOG_LOCAL0到LOG_LOCAL7 : 保留
LOG_LPR : line printer次系统
LOG_MAIL : mail次系统
LOG_NEWS : USENET news次系统
LOG_SYSLOG : syslogd内部所产生的讯息
LOG_USER(default) : 一般使用者等级讯息
LOG_UUCP : UUCP次系统

level
决定讯息的重要性. 以下的等级重要性逐次递减:

LOG_EMERG : 系统无法使用
LOG_ALERT : 必须要立即采取反应行动
LOG_CRIT : 重要状况发生
LOG_ERR : 错误状况发生
LOG_WARNING : 警告状况发生
LOG_NOTICE : 一般状况,但也是重要状况
LOG_INFO : 资讯讯息
LOG_DEBUG : 除错讯

配置文件:

/etc/syslog-ng/syslog-ng.conf
 

添加语句为:

本文地址:http://www.45fan.com/a/question/67938.html
Tags: 语言 函数 syslog--
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部