VC-Logger高性能 C++ 通用日志組件
VC-Logger 是一個(gè)簡單易用的 C++ 程序通用日志組件。設(shè)計(jì)時(shí)著重考慮三個(gè)方面:功能、可用性和性能。為了讓大家能更方便的學(xué)習(xí) VC-Logger,特此精心制作了幾個(gè)測(cè)試用例:TestGUILogger(GUI 版本測(cè)試用例 / 靜態(tài)加載)、TestDynamicLogger(GUI 版本測(cè)試用例 / 動(dòng)態(tài)加載)、TestConsoleLogger(Console 版本測(cè)試用例 / 靜態(tài)加載)。
功能: 本日志組件的目的是滿足大多數(shù)應(yīng)用程序記錄日志的需求 —— 把日志輸出到文件或發(fā)送到應(yīng)用程序中,并不提供一些復(fù)雜但不常用的功能。本日志組件的功能包括:
-
把日志信息輸出到指定文件
-
每日生成一個(gè)日志文件
-
對(duì)于 GUI 程序,可以把日志信息發(fā)送到指定窗口
-
對(duì)于Console應(yīng)用程序,可以把日志信息發(fā)往標(biāo)準(zhǔn)輸出 (std::cout)
-
支持 MBCS / UNICODE,Console / GUI 程序
-
支持動(dòng)態(tài)加載和靜態(tài)加載日志組件 DLL
-
支持 DEBUG/TRACE/INFO/WARN/ERROR/FATAL 等多個(gè)日志級(jí)別
可用性: 本日志組件著重考慮了可用性,盡量讓使用者用起來覺得簡便、舒心:
-
簡單純凈:不依賴任何程序庫或框架
-
使用接口簡單,不需復(fù)雜的配置或設(shè)置工作
-
提供 CStaticLogger 和 CDynamicLogger 包裝類用于靜態(tài)或動(dòng)態(tài)加載以及操作日志組件,用戶無 需關(guān)注加載細(xì)節(jié)
-
程序如果要記錄多個(gè)日志文件只需為每個(gè)日志文件創(chuàng)建相應(yīng)的 CStaticLogger 或 CDynamicLogger 對(duì)象
-
只需調(diào)用 Log()/Debug()/Trace()/Info()/Warn()/Error()/Fatal() 等方法記錄日志
-
日志記錄方法支持可變參數(shù)
-
日志輸出格式:<時(shí)間> <線程ID> <日志級(jí)別> <日志內(nèi)容>
性能: 性能是組件是否值得使用的硬指標(biāo),本組件從設(shè)計(jì)到編碼的過程都盡量考慮到性能優(yōu)化:
-
支持多線程同時(shí)發(fā)送寫日志請(qǐng)求
-
使用單獨(dú)線程在后臺(tái)寫日志,不影響工作線程的正常執(zhí)行
-
采用批處理方式批量記錄日志
*** 使用方法 ***
方法一:(靜態(tài)加載 Logger DLL)
--------------------------------------------------------------------------------------
-
應(yīng)用程序包含 StaticLogger.h 頭文件
-
創(chuàng)建 CStaticLogger 對(duì)象(通常為全局對(duì)象)
-
調(diào)用 CStaticLogger->Init(...) 初始化日志組件
-
使用 CStaticLogger->Log()/Debug()/Trace()/Info()/Warn()/Error()/Fatal() 等方法寫日志
-
調(diào)用 CStaticLogger->UnInit(...) 清理日志組件(CStaticLogger 對(duì)象析構(gòu)時(shí)也會(huì)自動(dòng)清理日志組件)
方法二:(動(dòng)態(tài)加載 Logger DLL)
--------------------------------------------------------------------------------------
-
應(yīng)用程序包含 DynamicLogger.h 頭文件
-
創(chuàng)建 CDynamicLogger 對(duì)象(通常為全局對(duì)象)
-
調(diào)用 CDynamicLogger->Init(...) 初始化日志組件
-
使用 CDynamicLogger->Log()/Debug()/Trace()/Info()/Warn()/Error()/Fatal() 等方法寫日志
-
調(diào)用 CDynamicLogger->UnInit(...) 清理日志組件(CDynamicLogger 對(duì)象析構(gòu)時(shí)也會(huì)自動(dòng)清理日志組件)
方法三:(直接用導(dǎo)出函數(shù)加載 Logger DLL)
--------------------------------------------------------------------------------------
-
應(yīng)用程序包含 Logger.h 頭文件
-
手工調(diào)用 ILoger_Create() 和 ILoger_Destroy() 導(dǎo)出函數(shù)創(chuàng)建和銷毀 ILogger 對(duì)象
(注:如果是動(dòng)態(tài)加載,需手工調(diào)用 ::LoadLibrary()/::FreeLibrary() 系列 API 函數(shù)加載和卸載 Logger DLL)
[
***** 對(duì)于希望通過窗口接收日志信息的 GUI 程序 *****
A. 日志組件初始化成功后調(diào)用 SetGUIWindow(HWND) 設(shè)置收日志的窗口
B. 窗口須響應(yīng)處理 LOG_MESSAGE 消息
C. 處理完 LOG_MESSAGE 消息后,調(diào)用 ILogger::FreeLogMsg() 銷毀接收到的 TLogMsg
]
Environment:
-
Windows 2000 or later (_WIN32_WINNT >= 0x0500)
-
VC++ 2010 or later
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 / 靜態(tài)加載)
-
TestDynamicLogger (GUI / 動(dòng)態(tài)加載)
-
TestConsoleLogger (Console / 靜態(tài)加載)
