一个简单的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 }

结束~~~

原文链接: https://www.cnblogs.com/wainiwann/archive/2013/01/30/2882308.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/77192

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午5:49
下一篇 2023年2月9日 下午5:50

相关推荐