Windows C++ 应用程序通用日志组件(组件及测试程序下载)(二)

2014-11-24 11:53:47 · 作者: · 浏览: 1
gger 对象(通常为全局对象)
42 2. 调用 CStaticLogger->Init(...) 初始化日志组件
43 3. 使用 CStaticLogger->Log()/Debug()/Trace()/Info()/Warn()/Error()/Fatal() 等方法写日志
44 4. 调用 CStaticLogger->UnInit(...) 清理日志组件(CStaticLogger 对象析构时也会自动清理日志组件)
45
46 方法二:(动态加载 Logger DLL)
47 --------------------------------------------------------------------------------------
48 0. 应用程序包含 DynamicLogger.h 头文件
49 1. 创建 CDynamicLogger 对象(通常为全局对象)
50 2. 调用 CDynamicLogger->Init(...) 初始化日志组件
51 3. 使用 CDynamicLogger->Log()/Debug()/Trace()/Info()/Warn()/Error()/Fatal() 等方法写日志
52 4. 调用 CDynamicLogger->UnInit(...) 清理日志组件(CDynamicLogger 对象析构时也会自动清理日志组件)
53
54 方法三:(直接用导出函数加载 Logger DLL)
55 --------------------------------------------------------------------------------------
56 0. 应用程序包含 Logger.h 头文件
57 1. 手工调用 ILoger_Create() 和 ILoger_Create() 导出函数创建和销毁 ILogger 对象
58 (注:如果是动态加载,需手工调用 ::LoadLibrary()/::FreeLibrary() 系列 API 函数加载和卸载 Logger DLL)
59
60 [
61 ***** 对于希望通过窗口接收日志信息的 GUI 程序 *****
62
63 A. 日志组件初始化成功后调用 SetGUIWindow(HWND) 设置收日志的窗口
64 B. 窗口须响应处理 LOG_MESSAGE 消息
65 C. 处理完 LOG_MESSAGE 消息后,调用 ILogger::FreeLogMsg() 销毁接收到的 TLogMsg
66 ]
67
68 Environment:
69 1. Windows 2000 or later (_WIN32_WINNT >= 0x0500)
70 2. VC++ 2010 or later
71
72 Release:
73 1. Logger_C.dll - Console/MBCS/Release
74 2. Logger_CD.dll - Console/MBCS/Debug
75 3. Logger_CU.dll - Console/Unicode/Release
76 4. Logger_CUD.dll - Console/Unicode/Debug
77 5. Logger.dll - GUI/MBCS/Release
78 6. Logger_D.dll - GUI/MBCS/Debug
79 7. Logger_U.dll - GUI/Unicode/Release
80 8. Logger_UD.dll - GUI/Unicode/Debug
81
82 Examples:
83 1. TestGUILogger - GUI 版测试程序 (静态加载)
84 2. TestDynamicLogger - GUI 版测试程序 (动态加载)
85 3. TestConsoleLogger - Console 版测试程序 (静态加载)
86
87 ******************************************************************************/
88
89 #pragma once
90
91 /**************************************************/
92 /********** imports / exports Logger.dll **********/
93
94 #ifdef LOGGER_EXPORTS
95 #define LOGGER_API __declspec(dllexport)
96 //#define TRY_INLINE inline
97 #else
98 #define LOGGER_API __declspec(dllimport)
99 //#define TRY_INLINE
100 #endif
101
102 /**************************************************/
103 /****************** 日志组件接口 *******************/
104
105 class LOGGER_API ILogger
106 {
107 public:
108 /***** 日志级别 *****/
109 enum LogLevel
110 {
111 LL_NONE = 0XFF,
112 LL_DEBUG = 1,
113 LL_TRACE = 2,
114 LL_INFO = 3,
115 LL_WARN = 4,
116 LL_ERROR = 5,
117 LL_FATAL = 6
118 };
119
120 /***** 操作错误码 *****/
121 enum ErrorCode
122 {
123 // 无错误
124 EC_OK = NO_ERROR,
125 // 文件操作相关的错误
126 EC_FILE_GENERIC,
127 EC_FILE_FILENOTFOUND,
128 EC_FILE_BADPATH,
129 EC_FILE_TOMANYOPERFILES,
130 EC_FILE_ACCESSDENIED,
131 EC_FILE_INVALIDFILE,
132 EC_FILE_REMOVEC