您的位置:首页 > 其它

68_进程之使用syslog来记录调试信息

2018-03-31 16:01 363 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: