Linux下日志主要在/var/log下,比如:message、warn、localmessages等,在suse11下,由进程/sbin/syslog-ng负责日志打印
配置文件:
/etc/syslog-ng/syslog-ng.conf
/etc/sysconfig/syslog
消息类型 |
消息来源 |
kern |
内核 |
User |
用户程序 |
Damon |
系统守护进程 |
Mail |
电子邮件系统 |
Auth |
与安全权限相关的命令 |
Lpr |
打印机 |
News |
新闻组信息 |
Uucp |
Uucp程序 |
Cron |
记录当前登录的每个用户信息 |
wtmp |
一个用户每次登录进入和退出时间的永久记录 |
Authpriv |
授权信息 |
优先级 |
描述 |
emerg |
最高的紧急程序状态 |
alert |
紧急状态 |
Cirt |
重要信息 |
warning |
警告 |
err |
临界状态 |
notice |
出现不寻常的事情 |
info |
一般性信息 |
Debug |
调试级信息 |
None |
不记录任何日志信息 |
3、函数接口
在Linux中,提供了四个有关syslog日志系统的系统调用,供用户使用:
(2)syslog函数
syslog函数的声明如下:
void syslog(int priority, const char * message, ...);
第一个参数是消息的紧急级别priority,第二个参数是消息及其格式,之后是格式对应的参数,如同C语言里面printf输出函数一样使用,具体的格式这里就不再详述。
第一个参数priority,它是由severity level和facility组成的。Facility已经在上面介绍了,下面介绍一下severity level,也就是消息的重要级别,它主要包括:
在实际使用中,如果我们的程序要使用系统日志功能,只需要在程序启动时使用openlog函数来连接syslogd程序,后面随时用syslog函数写日志就行了。
(3)closelog函数
其声明如下:
void closelog( void );
值得注意的是,虽然该函数的使用和调用情况非常简单,但是是必不可少的,因为在Linux系统中,打开的日志也是资源,如果只使用openlog函数打开 日 志,而忘记使用closelog关闭日志的话,当打开的日志数量累积到一定程度,便会造成内存不足,从而引起系统问题。
1)用syslog打印
#include <syslog.h> #include <stdio.h> #include <stdarg.h> int main(void) { int log_test; /*打开日志*/ openlog("main", LOG_PID|LOG_CONS, LOG_USER); /*写日志*/ syslog(LOG_INFO, "PID information, pid=%d", getpid()); /*关闭日志*/ closelog(); return 1; }
2)用vsyslog打印
#include <syslog.h> #include <stdio.h> #include <stdarg.h> #include <stdlib.h> void p_syslog(char *format, ...) { va_list ap; va_start(ap, format); vsyslog(LOG_INFO, format, ap); va_end(ap); } int main(void) { openlog("main", LOG_PID, 0); int a = 10; p_syslog("test is %d\n",a); closelog(); return 1; }程序运行的结果写入日志:/var/log/message
【End】
本文部分概念描述性内容摘自:
http://weisjohn.blog.163.com/blog/static/310152562012326113450226
http://hi.baidu.com/ugo5/blog/item/cb90ca0b224ce82de8248831.html