openlog为当前的应用程序打开一个log文件
syslog用来记录一条信息
closelog用来关闭本程序的log文件
可以使用这三个函数,为系统文件写一条条的日志,用日志来做记录
日志信息就是一个文件,每发生一件事,就给文件写一条日志信息,之后查看这个文件,就知道发生了什么事情
各种参数
void openlog(const char *ident, int option, int facility);
void syslog(int priority, const char *format, ...);
void closelog(void);
ident当前应用程序的名字,因为我们很多程序都会向日志文件写信息,
日志信息是共用的,log要知道这一条是a写的还是b写的
option facility都是一些宏定义
option:
LOG_CONS:
PID:每一条信息里面加上PID,知道是哪个进程发的
因为父子进程的进程名字(ident)是一样的,必须要通过PID来区别
facility
跟什么相关的信息,默认的LOG_USER,绝大多数用的这个,
日志信息的重要程度,共有8个紧张程度
一般log信息在/VAR/log messages
Ubuntu中 var/log/syslog文件中的
其实系统中一直有一个守护进程syslogd
我们调用syslog函数,是给这个进程发消息,这个服务进程将消息保存在/ var/log/syslog文件中里面
用 cat /var/log/syslog 打开
总结,syslogd日志文件系统的服务器进程,提供日志服务,任何进程通过这三个函数跟syslogd通信,
这就是OS提供的服务式的设计,FTP也是,
#include <stdio.h>
#include <syslog.h>
#include <sys/types.h>
#include <unistd.h>
int main(void)
{
printf("PID = %d.\n", getpid());
openlog(NULL, LOG_PID, LOG_USER);
syslog(LOG_DEBUG, "This is LT's log.\n");
closelog();
return 0;
}
加入准确时间信息的syslog
#include <stdio.h>
#include <syslog.h>
#include <sys/types.h>
#include <unistd.h>
#include <time.h>
int main(void)
{
time_t TimeNow;
char *str ={0};
TimeNow = time(NULL);
str = ctime(&TimeNow);
//printf("It's %s ", str);
printf("PID = %d.\n", getpid());
openlog(NULL, LOG_PID, LOG_USER);
syslog(LOG_DEBUG, str, 1);
syslog(LOG_DEBUG, "This is LT's log.\n");
closelog();
return 0;
}