27 inline operator ILogger* () const; // 转换为 ILogger 指针
28
29 private:
30 ILogger* m_pLogger;
31 };
CStaticLogger 为简化日志组件使用而设计,用于静态加载 Logger DLL 的场合。使用方法:
0. 应用程序包含 StaticLogger.h 头文件
1. 创建 CStaticLogger 对象(通常为全局对象)
2. 调用 CStaticLogger->Init(...) 初始化日志组件
3. 使用 CStaticLogger->Log()/Debug()/Trace()/Info()/Warn()/Error()/Fatal() 等方法写日志
4. 调用 CStaticLogger->UnInit(...) 清理日志组件(CStaticLogger 对象析构时也会自动清理日志组件)
3、CDynamicLogger:ILogger 包装器(智能指针)—— 用于动态加载 Logger DLL
1 #pragma once
2
3 #include "Logger.h"
4
5 /**************************************************/
6 /********* www.2cto.com/ *********/
7 /************** Logger DLL 默认文件名 ***************/
8
9 #ifdef _DEBUG
10 #ifdef _UNICODE
11 #ifdef _WINDOWS
12 #define DEF_LOGGER_DLL_FILE_PATH _T("Logger_UD.dll")
13 #else
14 #define DEF_LOGGER_DLL_FILE_PATH _T("Logger_CUD.dll")
15 #endif
16 #else
17 #ifdef _WINDOWS
18 #define DEF_LOGGER_DLL_FILE_PATH _T("Logger_D.dll")
19 #else
20 #define DEF_LOGGER_DLL_FILE_PATH _T("Logger_CD.dll")
21 #endif
22 #endif
23 #else
24 #ifdef _UNICODE
25 #ifdef _WINDOWS
26 #define DEF_LOGGER_DLL_FILE_PATH _T("Logger_U.dll")
27 #else
28 #define DEF_LOGGER_DLL_FILE_PATH _T("Logger_CU.dll")
29 #endif
30 #else
31 #ifdef _WINDOWS
32 #define DEF_LOGGER_DLL_FILE_PATH _T("Logger.dll")
33 #else
34 #define DEF_LOGGER_DLL_FILE_PATH _T("Logger_C.dll")
35 #endif
36 #endif
37 #endif
38
39 /**************************************************/
40 /*************** Logger DLL 导出函数 ***************/
41
42 // 创建 ILogger 对象
43 typedef ILogger* (*FN_ILogger_Create) ();
44 // 销毁 ILogger 对象
45 typedef void (*FN_ILogger_Destroy) (ILogger* p);
46 // 获取各日志级别的文字描述
47 typedef LPCTSTR (*FN_ILogger_GetLogLevelDesc) (ILogger::LogLevel ll);
48 // 获取各操作错误码的文字描述
49 typedef LPCTSTR (*FN_ILogger_GetErrorDesc) (ILogger::ErrorCode ec);
50
51 /*************************************************/
52 /********** ILogger 包装器(智能指针) ***********/
53 /************ 用于动态加载 Logger DLL ************/
54
55 class CDynamicLogger
56 {
57 public:
58 // 构造函数:如果 bLoad 为 TRUE,则在构建 CDynamicLogger 示例的同时创建 ILogger 对象
59 CDynamicLogger(BOOL bLoad = TRUE, LPCTSTR lpszFilePath = DEF_LOGGER_DLL_FILE_PATH)
60 {
61 Reset();
62
63 if(bLoad)
64 Load(lpszFilePath);
65 }
66
67 // 析构函数
68 ~CDynamicLogger()
69 {
70 Free();
71 }
72
73 private:
74 CDynamicLogger(const CDynamicLogger&);
75 CDynamicLogger& operator = (const CDynamicLogger&);
76
77 public:
78 // 创建 ILogger 对象
79 ILogger* ILogger_Create()
80 {return m_fnILoggerCreate();}
81 // 销毁 ILogger 对象
82 void ILogger_Destroy(ILogger* p)
83 {m_fnILoggerDestroy(p);}
84 // 获取各日志级别的文字描述
85 LPCTSTR ILogger_GetLogLevelDesc(ILogger::LogLevel ll)
86 {return m_fnILoggerGetLogLevelDesc(ll);}
87 // 获取各操作错误码的文字描述
88 LPCTSTR ILogger_GetErrorDesc(ILogger::ErrorCod