首页
社区
课程
招聘
[原创]发些个人库之 log 信息输出
发表于: 2013-10-7 12:19 6173

[原创]发些个人库之 log 信息输出

2013-10-7 12:19
6173

鉴于某某心情不佳,发点东西出来,让大家批一下吧,
DebugX.h

/***********************************************************************
版权所有:choday
文件名称:XDebug.h
描    述:
作    者:choday  
创建日期:2011-10-17 17:09:16
修 改 人:choday
修改日期:
修改原因:
***********************************************************************/

#pragma once
#include <tchar.h>
#include <stdio.h>
#include <crtdbg.h>
//#define DEBUG_TO_FILE _T("debug.txt")
//#define DEBUG_TO_CONSOLE
namespace XLIB
{

BOOL	PrintIP( DWORD ip );
BOOL	PrintfSockAddr( const SOCKADDR* paddr );

#ifdef DEBUG_TO_FILE

#define XInitDebug(){_tfreopen( DEBUG_TO_FILE,_T("a+t"),stdout);}
#define XDebugOut fflush(stdout);_tprintf
#define XDebugOutIP XLIB::PrintIP
#define XDebugOutSockAddr XLIB::PrintfSockAddr
#define XCloseDebug() fflush(stdout);

#else

#ifdef DEBUG_TO_CONSOLE
#define XInitDebug() {AllocConsole();freopen("CONOUT$","w+t",stdout);freopen("CONIN$","r+t",stdin);}
#define XDebugOut _tprintf
#define XDebugOutIP XLIB::PrintIP
#define XDebugOutSockAddr XLIB::PrintfSockAddr
#define XCloseDebug FreeConsole
#endif

#endif

#ifndef XInitDebug 
#define XInitDebug() ;
#define XDebugOutIP(a) ;
#define XDebugOutSockAddr(a) ;
#define XDebugOut ;
#define XCloseDebug() ;
#endif


class CXMessageLog
{
public:
	typedef enum
	{
		MESSAGE_TO_CONSOLE,
		MESSAGE_TO_FILE,
		MESSAGE_TO_DEBUGER,

	}MESSAGE_TO;

	CXMessageLog( MESSAGE_TO to,BOOL AddTime = FALSE,LPCTSTR lpFile = 0);
	CXMessageLog();
	~CXMessageLog();

	BOOL	Init( MESSAGE_TO to,BOOL AddTime = FALSE,LPCTSTR lpFile = 0);
	VOID	UnInit();

	VOID _cdecl MessageOut( LPCTSTR lpformat,... );
private:
	MESSAGE_TO	m_Messageto;
	TCHAR		m_lpFileName[MAX_PATH];
	BOOL		m_bInited;
	BOOL		m_AddTime;
};


/////////////////////////////////////////////////////////////////////////////////////
//
#ifndef ASSERT
	#ifdef _DEBUG
		#define ASSERT(expr)  _ASSERTE(expr)
	#else
		#define ASSERT(expr)
	#endif
#endif

#ifdef _DEBUG
#ifndef TRACE
#define TRACE __Trace
#endif
#else
#ifndef TRACE
#define TRACE
#endif
#endif

void X__Trace(LPCTSTR pstrFormat, ...);


/////////////////////////////////////////////////////////////////////////////////////
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 5
支持
分享
最新回复 (6)
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
很实用的代码
2013-10-7 12:43
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
3
学习学习,还是比较崇尚glog,一直在学习google的框架,顶一个,希望有天自己能写出与google相媲美的代码。
2013-10-7 12:50
0
雪    币: 239
活跃值: (190)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
4
glog太复杂了,咋用些简单的东西
2013-10-7 12:52
0
雪    币: 231
活跃值: (2631)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
希望大家多分享一下这样的东西,并把用法写清楚,方便新手,邓涛的就没写清楚,还是楼主的好
2013-10-7 13:28
0
雪    币: 357
活跃值: (3448)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
6
PrintfSockAddr 我喜欢用 inet_ntoa 代替
2013-10-7 14:06
0
雪    币: 517
活跃值: (84)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
7
google说了,调试信息输出允许用流,流使得信息输出更加方便简捷。
类如:
xerr << "int:" << value << "  lp:" << (void*)lp;
xdbg << "xdbg";
xtrace << "xtrace";
求超越
2013-10-8 10:46
0
游客
登录 | 注册 方可回帖
返回
//