linux 日志编程(总结)
来源:互联网 发布:淘宝不退货仅退款流程 编辑:程序博客网 时间:2024/05/29 06:40
日志主要涉及3个函数,分别是openlog、syslog和closelog函数。表8.4所示为这3个函数的具体信息。
openlog、syslog和closelog函数
头文件
<syslog.h>
函数形式
void openlog(const char *ident, int option, int facility);
void syslog(int priority, const char *format, ...);
void closelog(void);
返回值
成功
失败
是否设置errno
−
−
−
说明:openlog函数用于打开系统日志连接。只有在打开连接后,才能使用syslog函数向日志文件中添加日志信息。closelog函数用于关闭打开的系统日志连接,该函数的调用在实现中是可选择的。
openlog函数中的第1个参数为ident,该参数常用来表示信息的来源。ident指向的字符信息会被固定地添加在每行日志的前面。第2个参数option用于指定openlog函数和接下来调用的syslog函数的控制标志。option的取值情况如表8.5所示,可以单独取其中的某个值,也可以通过与运算来获得多种特性。第3个参数为facility,这个要与syslogd守护进程的配置文件对应,日志信息会写入syslog.conf文件指定的位置。
openlong函数中的option取值表
参 数
说 明
LOG_CONS
如果将信息发送给syslogd守护进程时发生错误,直接将相关信息输出到终端
LOG_NDELAY
立即打开与系统日志的连接(通常情况下,只有在产生第一条日志信息的情况下才会打开与日志系统的连接)
LOG_NOWAIT
在记录日志信息时,不等待可能的子进程的创建
LOG_ODELAY
类似于LOG_NDELAY参数,与系统日志的连接只有在syslog函数调用时才会创建
参 数
说 明
LOG_PERROR
在将信息写入日志的同时,将信息发送到标准错误输出(POSIX.1-2001不支持该参数)
LOG_PID
每条日志信息中都包括进程号
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也存在对应的关系。
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 <stdio.h>
#include <syslog.h>
int main(int argc,char* argv[])
{
openlog("HEMM",LOG_CONS | LOG_PID, LOG_USER);
int count=0;
while(count<5){
syslog(LOG_INFO,"%d, log info test...",count);
count++;
}
closelog();
return 0;
}
调用syslog函数时,指定的priority为LOG_INFO,对应于syslog.conf中的info优先级。而调用openlog函数的facility为LOG_USER,对应于syslog.conf中facility取user的情况。查找syslog.conf中的facility.level为user.info的规则,如图8.7所示。可知,日志文件为/var/log/message。
由于查看/var/log下的日志需要root权限,使用su切换到root用户。使用tail命令查看message文件中的日志信息,发现相关信息已经通过syslogd守护进程记录在了/var/log/message日志文件中
Jul 13 11:54:08 localhost HEMM[7631]: 0, log info test...
Jul 13 11:54:08 localhost HEMM[7631]: 1, log info test...
Jul 13 11:54:08 localhost HEMM[7631]: 2, log info test...
Jul 13 11:54:08 localhost HEMM[7631]: 3, log info test...
Jul 13 11:54:08 localhost HEMM[7631]: 4, log info test...
- linux 日志编程(总结)
- linux 日志编程(总结)
- linux 日志编程(总结)
- linux 日志编程(总结)
- linux log 日志编程
- linux系统日志编程
- linux日志文件系统总结
- Linux日志文件总结
- Linux查看日志总结
- Linux 编程总结(不断更新)
- Linux 学习日志:Linux, Linux C编程
- Linux系统日志学习总结
- linux 日志机制syslogd总结
- linux日志syslog知识总结
- linux日志机制syslogd总结
- linux日志机制syslogd总结
- Linux设备驱动编程编程总结(一)-------模块编程
- linux编程之日志服务与日志编程
- DOS 命令:建立用户和用户组脚本
- 有没有帮忙的呀??
- 理时:2010-06-02----------2010-06-06
- Java 中double变量的精度计算
- 求数组中最长递增子序列
- linux 日志编程(总结)
- 项目经验总结---养成良好习惯!
- 22道数据结构算法面试题(转)
- 在J2ME实现UTF-8转换为Unicode编码的方法
- 提高WebService性能大数据量网络传输处理
- 静态路由工作原理:关于路由的四个问答
- 组合问题一个
- jquery 对tr的循环取值
- SQLserver2005 smalldate 类型变量如何只显示年月日?