调试时打印日志信息
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
调试时打印日志信息
//使用说明
/************************
一、
工程名.h
#include "CxLog.h"
extern CxLog *gCxLog;
二、
工程名.CPP
CxLog *gCxLog;
...InitInstance()
{
bool alive = true;
gCxLog = NULL;
gCxLog = new CxLog(alive);
..
}
...ExitInstance()
{
if(gCxLog != NULL)
{
delete gCxLog;
}
gCxLog = NULL;
..
}
三、
找个全局的地方
#define OUTPUT_LOG_EN //启用日志输出
四、
在任何要打印日志的地方
#ifdef OUTPUT_LOG_EN
CString strTemp;
strTemp.Format(_T("想要添加的工作日志!")); gCxLog->Log(_T("类.cpp"), _T("函数名"),
哪一行比如50, CxLog::CX_LOG_MESSAGE, strTemp); #endif
*************************/
#ifndef _CX_LOG_H_
#define _CX_LOG_H_
#if defined(_MSC_VER)
#pragma warning(disable: 4530)
#endif
#include <stdio.h>
#include <time.h>
#include <assert.h>
#include <list>
#include <iterator>
#include <stdexcept>
#include <exception>
#if defined(_MSC_VER) || defined(__INTEL_COMPILER) #include <comdef.h>
#endif
#include <tchar.h>
#include <process.h>
#include <windows.h>
//////////////////////////////////////////////////////////////////////////
///文件型多线程日志类class for log file
//定义格式化输出
#ifndef CX_LOG_DEFAULT_FORMAT
#if (defined(_MSC_VER) &&
_MSC_VER<=1310) || defined(__BORLANDC__) || (defined(__GNUC__) && defined(_UNICODE)) #define CX_LOG_DEFAULT_FORMAT
_T("%s %s %s(%d): %s\r\n")
#else
#define CX_LOG_DEFAULT_FORMAT
_T("%s %s %s(%s, %d): %s\r\n")
#endif
#endif
//定义格式化输出的缓冲区大小
#ifndef CX_LOG_DEFAULT_FORMAT_SIZE
#define CX_LOG_DEFAULT_FORMAT_SIZE 1024 #endif
//定义是否替换控制用ASCII
#ifndef CX_LOG_REPLACE_CONTROL
#define CX_LOG_REPLACE_CONTROL true
#endif
//定义控制用ASCII的默认替换字符
#ifndef CX_LOG_REPLACE_ASCII
#define CX_LOG_REPLACE_ASCII _T(' ')
#endif
//定义窗口通知消息
#ifndef WM_CX_LOG
#define WM_CX_LOG WM_USER + 2200
#endif
class CxLog
{
public:
enum EnumType{
CX_LOG_MESSAGE = 0,
CX_LOG_WARNING,
CX_LOG_EXCEPTION,
CX_LOG_ERROR
};
static CxLog& Instance()
{
static bool alive = false;
static CxLog log(alive);
if(!alive)
{
OutputDebugString(_T("CxLog has destroy!"));
throw std::runtime_error("CxLog has destroy!"); }
return log;
}
struct Item
{