运行日志模块的设计和实现
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__);”功能相同。
分类: 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__);”功能相同。
相关文章推荐
- 用C语言开发一个BT下载软件 (四) ------ 代码实现-3-出错处理模块和运行日志模块
- 【7. 日志分析模块】云跳板机服务系统设计及实现
- 利用线程运行栈StackTraceElement设计Android日志模块
- 利用线程运行栈StackTraceElement设计Android日志模块
- Linux BT下载(10)-出错处理模块和运行日志模块设计
- 利用线程运行栈StackTraceElement设计Android日志模块
- Android 利用线程运行栈StackTraceElement设计Android日志模块
- Linux BT下载(13)-缓存管理模块设计与实现
- Linux下一个简单的日志系统的设计及其C代码实现
- 模块管理常规功能自定义系统的设计与实现(24--二个模块之间的关联[2])
- 一种Java日志系统框架的设计与实现
- 快速JavaEE轻量级框架&公用业务模块 设计&实现 6.1 - DAO测试
- 模块管理常规功能自定义系统的设计与实现(28--多个模块之间的关联[4])
- Java SSH框架系列:用户登录模块的设计与实现思路
- Linux内核设计与实现 学习笔记(7)设备与模块
- Python 实现根据不同的程序运行环境存放日志目录,Python实现Linux和windows系统日志的存放
- Tiger Concurrent Practice --日志分析并行分解设计与实现
- 从头认识Spring-3.2 简单的AOP日志实现-需要记录方法的运行时间
- 安卓实现分业务模块异常捕获,全局异常不崩溃,应用继续运行!
- 模块管理常规功能自定义系统的设计与实现(34--终级阶段 综合查询[1])