VC-Logger 高性能 C++ 通用日志组件开源项目

我要开发同款
匿名用户2013年06月13日
70阅读
开发技术C/C++
所属分类程序开发、日志工具(Logging)
授权协议Apache

作品详情

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/静态加载)

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论