轉載請說明出處!!! 作者git地址:https://github.com/GavinPong
一、架構概述:
1、採用基於對象的設計:
2、每條日誌都採用申請一個logger臨時對象,然後獲取logger對象中的logStream類成員對象,調用
logStream的<<運算符將日誌緩存到logStream的Buffer類成員對象的FixBuffer成員對象的固定緩
存空間中,臨時logger對象釋放時,在析構函數中調用輸出函數將緩存區中的日誌輸出;
3、具體的輸出由g_output全局函數指針指定的函數將緩存中的日誌輸出;g_output默認輸出到屏幕;
提供設置接口設置用戶自己的g_output接口;
二、日誌的填充原理:
1、Logger-->LogStream-->FixBuffer;
2、生成臨時的logger對象,通過Logger對象獲取到內部的LogStream對象,調用LogStream的<<
運算符將數據添加到LogStream的FixBuffer中,同一個對象的<<運算符將所有數據緩存到
LogStream的FixBuffer中;
三、日誌輸出原理:
1、Logger-->LogStream-->FilxBuffer-->outPut
2、當logger帝鄉被時,在析構函數,先通過LogStream是對象將FixBuffer對象拿到,然後調用全
局的Output將FixBuffer中的數據輸出;
四、類圖: