專欄導讀
??作者簡介:花想云 ,在讀本科生一枚,C/C++領(lǐng)域新星創(chuàng)作者,新星計劃導師,阿里云專家博主,CSDN內(nèi)容合伙人…致力于 C/C++、Linux 學習。
??專欄簡介:本文收錄于 C++項目——基于多設(shè)計模式下的同步與異步日志系統(tǒng)
??相關(guān)專欄推薦:C語言初階系列、C語言進階系列 、C++系列、數(shù)據(jù)結(jié)構(gòu)與算法、Linux
本項目實現(xiàn)的是一個多日志器日志系統(tǒng)
,主要實現(xiàn)的功能是讓程序員能夠輕松的將程序運行日志信息落地到指定位置
,且支持同步與異步
兩種方式的日志落地方式。
項目的框架設(shè)計將項目分為以下幾個模塊來實現(xiàn)。
(具體模塊在代碼實現(xiàn)中詳細講解)
模塊劃分
日志等級模塊
- 對輸出日志的等級進行劃分,以便于控制日志的輸出,并提供等級枚舉轉(zhuǎn)字符串的功能。
日志消息分為以下等級:
-
OFF
:關(guān)閉; -
DEBUG
:調(diào)式,調(diào)試時的關(guān)鍵信息輸出; -
INFO
:提示,普通的提示性日志信息; -
WARN
:警告,不影響運行,但是需要注意的日志; -
ERROR
:錯誤,程序運行時出現(xiàn)錯誤的日志; -
FATAL
:致命,一般是代碼導致程序無法正常運行的日志。
日志消息模塊
-
中間存儲日志輸出所需的各項要素信息。
-
時間
:描述本條日志輸出的時間; -
線程ID
:描述本條日志是哪一個線程輸出的; -
日志等級
:描述本條日志的等級; -
日志文件名
:描述本條日志在哪一個源碼文件中輸出的; -
日志行號
:描述本條日志在源碼文件的哪一行輸出的; -
日志數(shù)據(jù)
:本條日志的有效數(shù)據(jù)載荷。
-
日志消息格式化模塊
-
設(shè)置日志輸出格式,并提供對日志消息格式化的功能。
-
系統(tǒng)的
默認日志輸出格式
:[%d{%H:%M:%S}][%t][%c][%f:%l][%p]%T%m%n
;-
%d
表示日期,包含子格式{%H:%M:%S}
; -
%t
表示線程ID; -
%c
表示日志器名稱; -
%f
表示源碼文件名; -
%l
表示源碼行號; -
%p
表示日志級別; -
%m
表示主體消息; -
%n
表示換行;
-
-
設(shè)計思想:設(shè)計不同的子類,不同的子類從日志消息中取出不同的數(shù)據(jù)進行處理。文章來源:http://www.zghlxwxcb.cn/news/detail-709031.html
日志消息落地模塊
-
決定了日志消息的落地方向(即輸出位置),可以是標準輸出。也可以是日志文件,也可以是滾動文件進行輸出。
-
標準輸出
:表示將日志信息進行標準輸出打??; -
日志文件輸出
:表示將日志寫入指定文件末尾; -
滾動文件輸出
:當前以文件大小進行控制,當一個日志文件大小達到指定大小,則切換下一個文件進行輸出;
-
- 后期,也可以拓展遠程日志輸出,創(chuàng)建客戶端將日志消息發(fā)送到遠程的的日志分析服務器;
- 設(shè)計思想:設(shè)計不同的子類,不同的子類控制不同的日志落地方向。
日志器模塊
- 此模塊是對以上幾個模塊的整合,用戶通過日志器進行日志的輸出,有效降低用戶的使用難度。
- 此模塊包含有:日志消息落地模塊對象,日志消息格式化模塊對象,日志輸出等級。
日志器管理模塊
- 為了降低項目開發(fā)的耦合,不同的項目組可以有可以有自己的日志器來控制輸出格式以及落地方向,因此本項目是一個多日志器的日志系統(tǒng)。
- 管理模塊就是對創(chuàng)建的所有日志器進行統(tǒng)一的管理。并提供一個默認日志器提供標準輸出的日志輸出。
異步線程模塊
- 實現(xiàn)對日志的異步輸出功能,用戶只需要將輸出的日志任務放入任務池,異步線程負責日志的落地輸出功能,以此提供更加高效的非阻塞日志輸出。
模塊關(guān)系圖
文章來源地址http://www.zghlxwxcb.cn/news/detail-709031.html
到了這里,關(guān)于C++項目實戰(zhàn)——基于多設(shè)計模式下的同步&異步日志系統(tǒng)-④-日志系統(tǒng)框架設(shè)計的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!