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

2250阅读 0评论2012-01-19 liurhyme
分类:LINUX

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

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

log.h

#ifndef  LOG_H

#define  LOG_H

#include 

// 用于记录程序的行为

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

// 打开日志文件

int init_logfile(char *filename);

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

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

#endif

以下是log.c文件:

bterror.c

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#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__);功能相同。

上一篇:出错处理模块的设计和实现
下一篇:位图管理模块的设计和实现