Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1347844
  • 博文数量: 370
  • 博客积分: 10654
  • 博客等级: 中将
  • 技术积分: 4396
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 15:44
文章分类

全部博文(370)

文章存档

2012年(36)

2011年(195)

2010年(139)

分类: LINUX

2012-01-19 16:08:04

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

本模块负责记录程序运行的日志,以备查询和分析程序行为,由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__);功能相同。

阅读(2203) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~