一個簡單的c++寫日志類


在開發當中有的直接調試很方便,有的就不太好調試,所以我經常使用寫日志以及輸出Debug信息來進行開發。盡管我比較喜歡使用以輸出Debug的信息的方式來跟蹤程序。因為直接一句話:

OutputDebugString("你想輸出的信息\r\n");

 就可以在非調試模式下直接在DebugView上面顯示輸出信息了。

但是除了這種方式之外有時侯我也會使用寫日志的方式來輸出調試信息,雖然寫文件很簡單,但還是記錄一下吧。方便自己同時也可能方便需要的人吧。

首先是main()函數定義:

 1 #include "RcLogInfo.h"
 2 
 3 int main(void)
 4 {
 5     //////////////////////////////////////////////////////////////////////////
 6     char cPath[MAX_PATH];
 7     memset(cPath,0,MAX_PATH);
 8     if (!GetModuleFileName(NULL,cPath,MAX_PATH))
 9     {
10         return false;
11     }
12     char *FileName = cPath + strlen(cPath)-1;
13     while(*FileName !='\\')
14     {
15         --FileName;
16     }
17     *FileName = '\0';
18     char cFileName[MAX_PATH]={'\0'};
19     sprintf(cFileName,"%s\\%s",cPath,"TestLog.log");
20 
21 
22     //////////////////////////////////////////////////////////////////////////
23     FILE *m_pfLogFile=NULL;
24     if(NULL != m_pfLogFile)
25     {
26         fclose(m_pfLogFile);
27     }
28     m_pfLogFile = fopen(cFileName,"at+");
29     if(NULL == m_pfLogFile)
30     {
31         return 1;
32     }
33 
34 
35     //////////////////////////////////////////////////////////////////////////
36     RcLogInfo rl;
37     rl.SetLogFile(m_pfLogFile);
38 
39 
40     //////////////////////////////////////////////////////////////////////////
41     timeb aTime;
42     ftime(&aTime);
43     sprintf(rl.m_cInfo,"寫日志測試******************************+++++++++++++++++++++++_________________%s .%ld ms\n",ctime(&(aTime.time)),aTime.millitm);
44     rl.WriteLogInfo(rl.m_cInfo);
45 
46 
47     return 0;
48 
49 
50 }

下面是一個寫日志類實現:

/*
*	寫日志類
*
*/
#pragma once

#include <windows.h>
#include <atltime.h>
#include <sys/timeb.h>
#include <iostream>
using namespace std;

class RcLogInfo
{
public:
	RcLogInfo(void);
	~RcLogInfo(void);

public:
	//日志文件
	FILE* m_pfLogFile;
	char m_cInfo[255];

	int  SetLogFile(FILE *pfLogFile);
	int  WriteLogInfo(const char *pInfo);
};

 cpp文件:

 1 #include "RcLogInfo.h"
 2 
 3 RcLogInfo::RcLogInfo(void)
 4 {
 5     m_pfLogFile = NULL;
 6     memset(m_cInfo,NULL,sizeof(m_cInfo));
 7 }
 8 
 9 RcLogInfo::~RcLogInfo(void)
10 {
11     if (NULL != m_pfLogFile)
12     {
13         fclose(m_pfLogFile);
14         m_pfLogFile = NULL;
15     }
16 }
17 
18 int RcLogInfo::SetLogFile(FILE *pfLogFile)
19 {
20     m_pfLogFile=pfLogFile;    
21     return 0;
22 }
23 
24 int RcLogInfo::WriteLogInfo(const char *pInfo)
25 {
26     if(NULL != m_pfLogFile)
27     {
28         fprintf(m_pfLogFile,"%s",pInfo);
29         fflush(m_pfLogFile);
30         return 0;
31     }
32     return 1;
33 
34     
35 }

結束~~~

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM