使用singleton模式建立日志文件.
每个程序需要写日志.一般情况下一个程序仅存在一个日志文件.
而且要求日志文件减少耦合.
这样较符合单件模式的要求.
具体类设计如下:
/* Log File class
Copyright (C) 2005, vcebook@hotmail.com
The author of this program may be contacted at vcebook@hotmail.com.
*/
#ifndef _LOGFILE_H_
#define _LOGFILE_H_
#include "stdio.h"
class CLogFile
{
public:
static CLogFile * GetInstance(); //取得实例
bool mUserLog(char *szFormat,...); //写日志
~CLogFile(); //析构
int SetLogFileName(const char * pathfilename);
void ClearInstance();
//void CreateLog(const char *path,const char *pSuffix); //创建日志文件
protected:
CLogFile(); //构造函数
FILE * GetFilePointer(); //取文件指针
private:
static CLogFile * instance_LogFile; //本类实例
FILE * fp_LogFile; //文件指针
char sz_FileName[128]; //文件名称
int makepath(const char * path); //新建路径
int errno;
};
#endif
调用的时候进行如下调用:
int main(int argc, char* argv[])
{
CLogFile * g_LogFile = CLogFile::GetInstance();
g_LogFile->SetLogFileName("aaa.ini");
g_LogFile->mUserLog("%s======%d","111111111111111111111",22);
g_LogFile->SetLogFileName("bbb.ini");
g_LogFile->mUserLog("222222222222222222222");
g_LogFile->ClearInstance();
g_LogFile = CLogFile::GetInstance();
g_LogFile->ClearInstance();
g_LogFile = CLogFile::GetInstance();
g_LogFile->ClearInstance();
CLogFile * g_LogFile2 = CLogFile::GetInstance();
CLogFile * g_LogFile3 = CLogFile::GetInstance();
return 0;
}
优点:
和其他程序无耦合.
面向对象.易于理解
浙公网安备 33010602011771号