织梦CMS - 轻松建站从此开始!

罗索

一个很好的打印程序log到文件的类

落鹤生 发布于 2011-03-03 15:16 点击:次 
一个很好的打印程序log到文件的类。个人很喜欢这个,觉得很简介,而且很实用!
TAG:

代码如下

//log.h file

#define BUFFER_SIZE 4096
class CTraceFile : public CStdioFile  //继承自CStdioFile的一个类
{
public:   
    CTraceFile(){ }
    ~CTraceFile(){}
    CTraceFile::OpenLogFile(LPCTSTR lpszFileName, UINT nOpenFlags);//打开log文件,名字自己命名
    void CTraceFile::log(LPCTSTR lpszFormat, ...);
};

//lgo.cpp file

// 输入log的文件名

CTraceFile::OpenLogFile(LPCTSTR lpszFileName, UINT nOpenFlags)
{
    CStdioFile::Open(lpszFileName, nOpenFlags);
}

// 真正的打印函数,格式与printf一样

void CTraceFile::log(LPCTSTR lpszFormat, ...)
{
    va_list args;
    va_start(args, lpszFormat);   
    CHAR szBuffer[BUFFER_SIZE];
    char szBufferInfo[200];
    COleDateTime temp = COleDateTime::GetCurrentTime();

//首先打印时间信息到文件

    sprintf(szBufferInfo, "\n[%d/%d/%d %d:%d:%d]    ",temp.GetYear(), temp.GetMonth(),temp.GetDay(),
        temp.GetHour(),temp.GetMinute(),temp.GetSecond());
    WriteString(szBufferInfo);

//打印log信息到文件
    _vsntprintf(szBuffer, sizeof(szBuffer), lpszFormat, args);
    ASSERT(m_pStream);
    WriteString(szBuffer);   
    va_end(args);

// 输出到文件,怕系统缓存了一部分数据,如果程序非法关闭,会导致丢失重要的log信息
    Flush();

}

我的log实例如下:

定义一个全局的对象logTrace。这样程序的各个地方都可以使用。

CTraceFile logTrace;

在程序启动的地方加入如下函数,主要是打开log文件。为后面的输出log信息做准备。

void CreateLogFile()
{
    char DestDirBuf[512];

    //文件位于程序同一目录下的log.txt

    GetSystemDirectory(DestDirBuf, 512);
    DestDirBuf[3] = '\0';

    strcat(DestDirBuf, SETUP_DSTDIR);
    CreateDirectory(DestDirBuf, NULL);
    strcat(DestDirBuf, \\Log.txt);

//注意程序下次的启动会覆盖上一次的数据。如果不想覆盖可以加上打开的flag. CFile::modeNoTruncate
    logTrace.OpenLogFile(DestDirBuf, CFile::modeCreate | CFile::modeWrite | CFile::shareDenyWrite);
}

个人很喜欢这个,觉得很简介,而且很实用!

(renjwjx)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201103/11004.html]
本文出处:CSDN博客 作者:renjwjx
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容