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

2014-11-24 11:53:47 · 作者: · 浏览: 3
URRENTDIR,
133 EC_FILE_DIRECTORYFULL,
134 EC_FILE_BADSEEK,
135 EC_FILE_HARDIO,
136 EC_FILE_SHARINGVIOLATION,
137 EC_FILE_LOCKVIOLATION,
138 EC_FILE_DISKFULL,
139 EC_FILE_ENDOFFILE,
140 // 其他错误
141 EC_INVALID_STATE,
142 EC_INIT_LOGLEVEL,
143 EC_INIT_PRINTFLAG,
144 EC_INIT_CREATE_LOG_THREAD_FAIL
145 };
146
147 /******************************************
148 日志信息结构
149 *******************************************/
150 struct TLogMsg
151 {
152 DWORD m_dwSize; // 结构大小 - 跟据消息长度动态变化
153 LogLevel m_logLevel; // 日志级别
154 UINT m_uiThreadID; // 线程ID
155 SYSTEMTIME m_stMsgTime; // 记录时间
156 TCHAR m_psMsg[1]; // 消息内容
157 };
158
159 public:
160 ILogger(void);
161 virtual ~ILogger(void);
162 private:
163 ILogger(const ILogger&);
164 ILogger& operator = (const ILogger&);
165
166 public:
167 // 日志组件初始化方法
168 virtual BOOL Init(
169 LPCTSTR logFile = NULL // 日志文件. 默认: {AppPath}/logs/{AppName}-YYYYMMDD.log
170 , LogLevel ll = DEFAULT_LOG_LEVEL // 日志级别. 默认: [Debug -> LL_DEBUG] / [Release -> LL_INFO]
171 , int printFlag = DEFAULT_PRINT_FLAG // 输出掩码. 是否输出到文件和(或)屏幕. 默认: 只输出到文件
172 ) = 0;
173 // 日志组件清理方法
174 virtual BOOL UnInit() = 0;
175
176 public:
177 // 写日志方法:传入日志内容字符串(对于不需要格式化的日志文本,用本方法效率最高)
178 virtual void Log_0 (LogLevel ll, LPCTSTR msg) = 0;
179 virtual void Debug_0(LPCTSTR msg);
180 virtual void Trace_0(LPCTSTR msg);
181 virtual void Info_0 (LPCTSTR msg);
182 virtual void Warn_0 (LPCTSTR msg);
183 virtual void Error_0(LPCTSTR msg);
184 virtual void Fatal_0(LPCTSTR msg);
185
186 // 写日志方法:传入格式化字符串和参数栈指针(通常只在组件内部使用)
187 virtual void LogV (LogLevel ll, LPCTSTR format, va_list arg_ptr);
188
189 // 写日志方法:传入格式化字符串和可变参数(非常灵活简便)
190 virtual void Log (LogLevel ll, LPCTSTR format, ...);
191 virtual void Debug (LPCTSTR format, ...);
192 virtual void Trace (LPCTSTR format, ...);
193 virtual void Info (LPCTSTR format, ...);
194 virtual void Warn (LPCTSTR format, ...);
195 virtual void Error (LPCTSTR format, ...);
196 virtual void Fatal (LPCTSTR format, ...);
197
198 // 写日志方法:传入格式化字符串和可变参数(与上一组方法类似,但在进行任何操作前会检查日志级别)
199 virtual void TryLog (LogLevel ll, LPCTSTR format, ...);
200 virtual void TryDebug (LPCTSTR format, ...);
201 virtual void TryTrace (LPCTSTR format, ...);
202 virtual void TryInfo (LPCTSTR format, ...);
203 virtual void TryWarn (LPCTSTR format, ...);
204 virtual void TryError (LPCTSTR format, ...);
205 virtual void TryFatal (LPCTSTR format, ...);
206
207 // 通用辅助方法
208 virtual BOOL HasInited () const = 0; // 是否已经初始化
209 virtual BOOL IsPrint2File () const = 0; // 是否把日志输出到文件
210 virtual BOOL IsPrint2Screen () const = 0; // 是否把日志输出到屏幕窗口
211 virtual int GetPrintFlag () const = 0; // 打印标志
212 virtual LogLevel GetLogLevel () const