VC-Logger是一个简单易用的C++程序通用日志组件。设计时着重考虑三个方面:功能、可用性和性能。为了让大家能更方便的学习VC-Logger,特此精心制作了几个测试用例:TestGUILogger(GUI版本测试用例/静态加载)、TestDynamicLogger(GUI版本测试用例/动态加载)、TestConsoleLogger(Console版本测试用例/静态加载)。
功能: 本日志组件的目的是满足大多数应用程序记录日志的需求——把日志输出到文件或发送到应用程序中,并不提供一些复杂但不常用的功能。本日志组件的功能包括:
把日志信息输出到指定文件
每日生成一个日志文件
对于GUI程序,可以把日志信息发送到指定窗口
对于Console应用程序,可以把日志信息发往标准输出(std::cout)
支持MBCS/UNICODE,Console/GUI程序
支持动态加载和静态加载日志组件DLL
支持DEBUG/TRACE/INFO/WARN/ERROR/FATAL等多个日志级别
可用性: 本日志组件着重考虑了可用性,尽量让使用者用起来觉得简便、舒心:
简单纯净:不依赖任何程序库或框架
使用接口简单,不需复杂的配置或设置工作
提供CStaticLogger和CDynamicLogger包装类用于静态或动态加载以及操作日志组件,用户无需关注加载细节
程序如果要记录多个日志文件只需为每个日志文件创建相应的CStaticLogger或CDynamicLogger对象
只需调用Log()/Debug()/Trace()/Info()/Warn()/Error()/Fatal()等方法记录日志
日志记录方法支持可变参数
日志输出格式:<时间><线程ID><日志级别><日志内容>
性能: 性能是组件是否值得使用的硬指标,本组件从设计到编码的过程都尽量考虑到性能优化:
支持多线程同时发送写日志请求
使用单独线程在后台写日志,不影响工作线程的正常执行
采用批处理方式批量记录日志
***使用方法***方法一:(静态加载LoggerDLL)--------------------------------------------------------------------------------------
应用程序包含StaticLogger.h头文件
创建CStaticLogger对象(通常为全局对象)
调用CStaticLogger->Init(...)初始化日志组件
使用CStaticLogger->Log()/Debug()/Trace()/Info()/Warn()/Error()/Fatal()等方法写日志
调用CStaticLogger->UnInit(...)清理日志组件(CStaticLogger对象析构时也会自动清理日志组件)
方法二:(动态加载LoggerDLL)--------------------------------------------------------------------------------------
应用程序包含DynamicLogger.h头文件
创建CDynamicLogger对象(通常为全局对象)
调用CDynamicLogger->Init(...)初始化日志组件
使用CDynamicLogger->Log()/Debug()/Trace()/Info()/Warn()/Error()/Fatal()等方法写日志
调用CDynamicLogger->UnInit(...)清理日志组件(CDynamicLogger对象析构时也会自动清理日志组件)
方法三:(直接用导出函数加载LoggerDLL)--------------------------------------------------------------------------------------
应用程序包含Logger.h头文件
手工调用ILoger_Create()和ILoger_Destroy()导出函数创建和销毁ILogger对象
(注:如果是动态加载,需手工调用::LoadLibrary()/::FreeLibrary()系列API函数加载和卸载LoggerDLL) [ *****对于希望通过窗口接收日志信息的GUI程序***** A.日志组件初始化成功后调用SetGUIWindow(HWND)设置收日志的窗口 B.窗口须响应处理LOG_MESSAGE消息 C.处理完LOG_MESSAGE消息后,调用ILogger::FreeLogMsg()销毁接收到的TLogMsg ]Environment:
Windows2000orlater(_WIN32_WINNT>=0x0500)
VC++2010orlater
Release:
Logger_C.dll-Console/MBCS/Release
Logger_CD.dll-Console/MBCS/Debug
Logger_CU.dll-Console/Unicode/Release
Logger_CUD.dll-Console/Unicode/Debug
Logger.dll-GUI/MBCS/Release
Logger_D.dll-GUI/MBCS/Debug
Logger_U.dll-GUI/Unicode/Release
Logger_UD.dll-GUI/Unicode/Debug
Examples:
TestGUILogger (GUI/ 静态加载)
TestDynamicLogger (GUI/ 动态加载)
TestConsoleLogger (Console/静态加载)
评论