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

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

2013-10-7 12:19
6237

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/***********************************************************************
版权所有: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, ...);
 
 
/////////////////////////////////////////////////////////////////////////////////////
}

[注意]看雪招聘,专注安全领域的专业人才平台!

收藏
免费 5
支持
分享
赞赏记录
参与人
雪币
留言
时间
心游尘世外
为你点赞~
2024-5-31 06:36
QinBeast
为你点赞~
2024-5-31 06:28
飘零丶
为你点赞~
2024-4-24 01:00
shinratensei
为你点赞~
2024-3-14 00:26
PLEBFE
为你点赞~
2023-3-5 04:17
最新回复 (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
雪    币: 240
活跃值: (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
活跃值: (4213)
能力值: ( 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
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册