-
-
[原创]发些个人库之 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直播授课