您的位置:首页 > 其它

运行日志模块的设计和实现

2012-12-12 16:25 357 查看
运行日志模块的设计和实现 (2012-01-19 16:08)

分类: BT下载软件的开发

运行日志模块的设计和实现

本模块负责记录程序运行的日志,以备查询和分析程序行为,由log.h和log.c两个文件构成。

log.h

#ifndef LOG_H

#define LOG_H

#include <stdarg.h>

// 用于记录程序的行为

void logcmd(char *fmt,...);

// 打开日志文件

int init_logfile(char *filename);

// 将程序运行日志记录到文件

int logfile(char *file,int line,char *msg);

#endif

以下是log.c文件:

bterror.c

#include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

#include <string.h>

#include <sys/stat.h>

#include <sys/types.h>

#include <fcntl.h>

#include "log.h"

// 日志文件的描述符

int logfile_fd = -1;

// 在命令行上打印一条日志

void logcmd(char *fmt,...)

{

va_list ap;

va_start(ap,fmt);

vprintf(fmt,ap);

va_end(ap);

}

// 打开记录日志的文件

int init_logfile(char *filename)

{

logfile_fd = open(filename,O_RDWR|O_CREAT|O_APPEND,0666);

if(logfile_fd < 0) {

printf("open logfile failed\n");

return -1;

}

return 0;

}

// 将一条日志写入日志文件

int logfile(char *file,int line,char *msg)

{

char buff[256];

if(logfile_fd < 0) return -1;

snprintf(buff,256,"%s:%d %s\n",file,line,msg);

write(logfile_fd,buff,strlen(buff));

return 0;

}

程序说明。

函数logcmd是一个变长参数的函数,也就是函数的参数个数是可变的,类似于printf函数。语句“logcmd(“%s:%d error\n”,__FILE__, __LINE__);”的功能与“printf(“%s:%d error\n”,__FILE__, __LINE__);”功能相同。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐