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

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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值