VC-Logger

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/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 / 靜態載入)

  • 熱門詞條

    聯絡我們