VC-Logger 是由 JessMA 開源組織開發的一個簡單易用的 C++ 程式通用日誌組件。設計時著重考慮三個方面:功能、可用性和性能。為了讓大家能更方便的學習 VC-Logger,發行包中包含幾個測試用例:TestGUILogger(GUI 版本測試用例 / 靜態載入)、TestDynamicLogger(GUI 版本測試用例 / 動態載入)、TestConsoleLogger(Console 版本測試用例 / 靜態載入)。
基本介紹
- 軟體名稱:VC-Logger
- 開發商:JessMA
- 軟體語言:英文
基本資料,功能:,可用性:,性能:,使用方法,方法一:,方法二:,方法三:,
基本資料
功能:
本日誌組件的目的是滿足大多數應用程式記錄日誌的需求 —— 把日誌輸出到檔案或傳送到應用程式中,並不提供一些複雜但不常用的功能。本日誌組件的功能包括:
- 把日誌信息輸出到指定檔案
- 每日生成一個日誌檔案
- 對於 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
]
[
***** 對於希望通過視窗接收日誌信息的 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/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 / 靜態載入)