您的位置:首页 > 编程语言 > C语言/C++

一个简单的c++写日志类

2014-09-01 11:24 225 查看
在开发当中有的直接调试很方便,有的就不太好调试,所以我经常使用写日志以及输出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 }


结束~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: