惊涛拍岸
惊涛拍岸

导航

 

使用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;
}

优点:
 和其他程序无耦合.
 面向对象.易于理解

posted on 2005-08-31 22:26  惊涛拍岸  阅读(460)  评论(2)    收藏  举报