在開發當中有的直接調試很方便,有的就不太好調試,所以我經常使用寫日志以及輸出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 }
結束~~~
