openlog(),系统信息记录
来源:互联网 发布:mac口红是哪个国家的 编辑:程序博客网 时间:2024/05/11 02:15
守护进程日志的实现
syslogd守护进程用于解决守护进程的日志记录问题,而日志信息保存的位置和记录的信息级别是在syslogd守护进程的配置文件中设定的。守护进程日志主要涉及3个函数,分别是openlog、syslog和closelog函数。表8.4所示为这3个函数的具体信息。
表8.4 openlog、syslog和closelog函数
头文件
<syslog.h>
函数形式
void openlog(const char *ident, int option, int facility);
void syslog(int priority, const char *format, ...);
void closelog(void);
说明:调用openlog是可选择的。如果不调用openlog,则在第一次调用syslog时,自动调用openlog。调用closelog也是可选择的,它只是关闭被用于与syslog守护进程通信的描述符。调用openlog 使我们可以指定一个ident,以后, 的名称(例如 ,cron ,ine 等此ident 将被加至每则记录消息中。ident 一般是程序)
openlog函数中的第1个参数为ident,该参数常用来表示信息的来源。ident指向的字符信息会被固定地添加在每行日志的前面。第2个参数option用于指定openlog函数和接下来调用的syslog函数的控制标志。option的取值情况如表8.5所示,可以单独取其中的某个值,也可以通过与运算来获得多种特性。第3个参数为facility,这个要与syslogd守护进程的配置文件对应,日志信息会写入syslog.conf文件指定的位置。
表8.5 openlong函数中的option取值表
参 数
说 明
LOG_CONS
如果将信息发送给syslogd守护进程时发生错误,直接将相关信息输出到终端
LOG_NDELAY
立即打开与系统日志的连接(通常情况下,只有在产生第一条日志信息的情况下才会打开与日志系统的连接)
LOG_NOWAIT
在记录日志信息时,不等待可能的子进程的创建
LOG_ODELAY
类似于LOG_NDELAY参数,与系统日志的连接只有在syslog函数调用时才会创建
参 数
说 明
LOG_PERROR
在将信息写入日志的同时,将信息发送到标准错误输出(POSIX.1-2001不支持该参数)
LOG_PID
每条日志信息中都包括进程号
参数facility的取值如表8.6所示。这些值与前面syslog.conf中的facility是存在对应关系的。
表8.6 openlog函数参数facility取值
facility参数
syslog.conf中对应的facility取值
LOG_KERN
kern
LOG_USER
user
LOG_MAIL
LOG_DAEMON
daemon
LOG_AUTH
auth
LOG_SYSLOG
syslog
LOG_LPR
lpr
LOG_NEWS
news
LOG_UUCP
uucp
LOG_CRON
cron
LOG_AUTHPRIV
authpriv
LOG_FTP
ftp
LOG_LOCAL0~LOG_LOCAL7
local0~local7
syslog函数中的第一个参数priority表示消息的级别。与openlog函数中的facility参数类似,priority参数与level也存在对应的关系。priority取值和对应关系如表8.7所示。
表8.7 syslog函数参数priority取值
priority参数
syslog.conf中对应的level取值
LOG_EMERG
emerg
LOG_ALERT
alert
LOG_CRIT
crit
LOG_ERR
err
LOG_WARNING
warning
LOG_NOTICE
notice
LOG_INFO
info
LOG_DEBUG
debug
syslog函数的第二个参数为消息的格式,之后是格式对应的参数。函数的使用类似于printf函数。
参考代码如下:
点击(此处)折叠或打开
- #include <syslog.h>
- int main(int argc, char **argv)
- {
- 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;
- }
执行结果:#cat /var/log/syslog
转自:http://blog.chinaunix.net/uid-26583794-id-3166083.html
syslog()的补充说明:
syslog函数及参数
syslog函数用于把日志消息发给系统程序syslogd去记录,此函数原型是:
void syslog(int priority, const char *format, ...);
第一个参数是消息的紧急级别,第二个参数是消息的格式,之后是格式对应的参数。就是printf函数一样使用。
如果我们的程序要使用系统日志功能,只需要在程序启动时使用openlog函数来连接syslogd程序,后面随时用syslog函数写日志就行了。
level
NOTES
SEE ALSO
vsyslog与syslog函数的功能是一样的。
- openlog(),系统信息记录
- openlog()
- 系统日志函数syslog(),openlog(),closelog()
- 系统日志函数syslog(),openlog(),closelog()
- 系统日志函数syslog(),openlog(),closelog()
- 系统日志函数syslog(),openlog(),closelog()
- Linux系统日志API---------openlog(), syslog(), closelog()
- android获取系统信息记录
- linux日志系统介绍 —— syslog(),openlog(),closelog()
- linux系统日志函数syslog,openlog,closelog函数
- xml记录用户登录系统信息
- 自己c写的信息记录系统
- IO流——记录异常信息、系统信息
- syslog 系统日志服务 --记录daemon出错信息
- 用Log4Net来记录系统的日志信息
- 学生信息综合管理系统开发记录(数据库课程设计)
- 论文系统Step1:从日志记录中提取特定信息
- 信息记录
- linux中fork()和vfork()函数的使用和区别
- 改变对话框背景色,对话框内文本的颜色与背景色
- Listview的onItemClickListener无法响应的问题
- 输入年月日,获取当月日历
- SpringMVC的@ResponseBody乱码
- openlog(),系统信息记录
- Linux 命令
- Java日志管理:Logger.getLogger()和LogFactory.getLog()的区别(详解Log4j)
- Android中如何做到Service被关闭后又自动启动
- Android Service 服务(一)—— Service
- Android之完美退出方法
- OTTO-EVENTBUS
- Cordova Crosswalk如何生成app及添加Plugins
- 在OC项目中添加Swift文件并实现混合编程