VC-Logger
程式通用日誌組件。 CStaticLogger CStaticLogger

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> <日誌級別> <日誌內容>
性能: 性能是組件是否值得使用的硬指標,本組件從設計到編碼的過程都儘量考慮到性能最佳化:支持多執行緒同時傳送寫日誌請求使用單獨執行緒在後台寫日誌,不影響工作執行緒的正常執行採用批處理方式批量記錄日誌
*** 使用方法 ***
方法一:(靜態載入 Logger DLL)
--------------------------------------------------------------------------------------應用程式包含 StaticLogger.h 頭檔案創建 CStaticLogger 對象(通常為全局對象)調用 CStaticLogger->Init(...) 初始化日誌組件使用 CStaticLogger->Log()/Debug()/Trace()/Info()/Warn()/Error()/Fatal() 等方法寫日誌調用 CStaticLogger->UnInit(...) 清理日誌組件(CStaticLogger 對象析構時也會自動清理日誌組件)
方法二:(動態載入 Logger DLL)
--------------------------------------------------------------------------------------應用程式包含 DynamicLogger.h 頭檔案創建 CDynamicLogger 對象(通常為全局對象)調用 CDynamicLogger->Init(...) 初始化日誌組件使用 CDynamicLogger->Log()/Debug()/Trace()/Info()/Warn()/Error()/Fatal() 等方法寫日誌調用 CDynamicLogger->UnInit(...) 清理日誌組件(CDynamicLogger 對象析構時也會自動清理日誌組件)
方法三:(直接用導出函式載入 Logger DLL)
--------------------------------------------------------------------------------------應用程式包含 Logger.h 頭檔案手工調用 ILoger_Create() 和 ILoger_Destroy() 導出函式創建和銷毀 ILogger 對象
(註:如果是動態載入,需手工調用 ::LoadLibrary() / ::FreeLibrary() 系列 API 函式載入和卸載 Logger)
[
***** 對於希望通過視窗接收日誌信息的 GUI 程式 *****
A. 日誌組件初始化成功後調用 SetGUIWindow(HWND) 設定收日誌的視窗
B. 視窗須回響處理 LOG_MESSAGE 訊息
C. 處理完 LOG_MESSAGE 訊息後,調用 ILogger::FreeLogMsg() 銷毀接收到的 TLogMsg
]
Environment:Windows 2000 or later (_WIN32_WINNT >= 0x0500)VC++ 2010 or later
Release:Logger_C.dll - Console/MBCS/ReleaseLogger_CD.dll - Console/MBCS/DebugLogger_CU.dll - Console/Unicode/ReleaseLogger_CUD.dll - Console/Unicode/DebugLogger.dll - GUI/MBCS/ReleaseLogger_D.dll - GUI/MBCS/DebugLogger_U.dll - GUI/Unicode/ReleaseLogger_UD.dll - GUI/Unicode/Debug
Examples:TestGUILogger (GUI / 靜態載入)TestDynamicLogger(GUI / 動態載入)TestConsoleLogger (Console / 靜態載入)