VC-Logger 是一个简单易用的 C++ 程序通用日志组件。设计时着重考虑三个方面:功能、可用性和性能。为了让大家能更方便的学习 VC-Logger,特此精心制作了几个测试用例:TestGUILogger(GUI 版本测试用例 / 静态加载)、TestDynamicLogger(GUI 版本测试用例 / 动态加载)、TestConsoleLogger(Console 版本测试用例 / 静态加载)。
(项目主页:http://www.jessma.org,下载地址:http://www.oschina.net/p/vc-logger)
功能: 本日志组件的目的是满足大多数应用程序记录日志的需求 —— 把日志输出到文件或发送到应用程序中,并不提供一些复杂但不常用的功能。本日志组件的功能包括:
可用性: 本日志组件着重考虑了可用性,尽量让使用者用起来觉得简便、舒心:
性能: 性能是组件是否值得使用的硬指标,本组件从设计到编码的过程都尽量考虑到性能优化:
*** 使用方法 ***
方法一:(静态加载 Logger DLL)
--------------------------------------------------------------------------------------
方法二:(动态加载 Logger DLL)
--------------------------------------------------------------------------------------
方法三:(直接用导出函数加载 Logger DLL)
--------------------------------------------------------------------------------------
(注:如果是动态加载,需手工调用 ::LoadLibrary()/::FreeLibrary() 系列 API 函数加载和卸载 Logger DLL)
[
***** 对于希望通过窗口接收日志信息的 GUI 程序 *****
A. 日志组件初始化成功后调用 SetGUIWindow(HWND) 设置收日志的窗口
B. 窗口须响应处理 LOG_MESSAGE 消息
C. 处理完 LOG_MESSAGE 消息后,调用 ILogger::FreeLogMsg() 销毁接收到的 TLogMsg
]
Environment:
Release:
Examples:
相关博文:《Windows C++ 应用程序通用日志组件(组件及测试程序下载)》
众所周知,在调试、跟踪和执行应用程序的过程中,程序的日志能为这些工作提供大量有价值的运行信息。因此,程序的日志对应用程序的运行、维护至关重要。
在如何记录程序日志方面,通常有三种选择:
1、采用Log4CXX等公共开源日志组件:这类日志组件的特点是跨平台且功能比较强大,例如可以把日志发往另一台服务器或记录到数据库中等;另外,可配置性较高,可以通过配置文件或程序代码对日志进行很多个性化设置。但从另外一个角度看,由于这些优点往往也导致了在使用方面的缺点。首先,对于一般应用程序来说,它们并不需要太多的功能,通常只需要把日志记录到文件或反馈到应用程序,功能太多反正让用户使用起来觉得繁琐还得背负很多从来都用不到的代码。其次,这类日志组件通常是跨平台的,并不只是针对 Windows 或 VC 的应用程序,因此使用起来总会觉得有点别扭,例如他们的字符都是用 char 类型的,对于一个 Unicode 程序来说每次写日志都要做字符转换是很不爽的事情,本座在多年前曾经使用过 Log4Cpp ,程序执行时总是报告日志组件有内存泄露,虽然有可能是误报,但是使用起来总觉得很不舒服。
2、自己写几个简单的类或函数记录日志:这种方法的确很简单,通常都不用一两百行的代码。但这种方法通常缺乏规范性和通用性,其他程序需要记录类似的但有点差异的日志时,通常的作法是:Copy-Paste-Modify;另外,这类方法很可能也没有考虑性能或并发方面的问题,通常是直接在工作线程中写日志,对于那些性能要求较高的应用程序是绝对不允许的。
3、干脆不记录任何日志:的确,现在很多程序由于各种原因并没有记录任何日志。但本座以为,如果一个程序是有用的,具备一定功能,并且需要连续运行较长一段时间,那么记录日志是必须的;否则,得认真考虑该程序是否有存在的必要了。