Printf的多功能打印(帶顏色)

哈嘍,伙計(jì)們!
最近做了一些
Linux
應(yīng)用開發(fā)方面的東西,感覺現(xiàn)在有點(diǎn)混亂,所以想將每個(gè)知識(shí)點(diǎn)模塊化,并且能夠搭建自己的API
庫(kù),方便以后能夠直接使用!
今天主要來(lái)討論一下我們最常用的打印字符串,如果實(shí)現(xiàn)調(diào)試打印和顏色打印。
在Linux
開發(fā)環(huán)境下,我們?nèi)粘J褂玫拇蛴∽址闹饕枨罂赡苡袃煞N:
多級(jí)別打印:我們調(diào)試打印信息可以分為多個(gè)級(jí)別,全局設(shè)置打印級(jí)別,來(lái)實(shí)現(xiàn)打印的全局管理!
多顏色打印:不同的打印級(jí)別對(duì)應(yīng)不同的打印色彩,方便快速吸引開發(fā)者的注意力,快速定位問題!
基于以上兩個(gè)基本需求,我們來(lái)進(jìn)行簡(jiǎn)單封裝。
2、打印級(jí)別分類
打印級(jí)別參考內(nèi)核的分類,設(shè)置級(jí)別如下:
3、打印級(jí)別控制
打印級(jí)別分類后,我們定義全局變量,來(lái)全局控制打印級(jí)別。
如果需要全局調(diào)整打印級(jí)別,我們可以調(diào)用Set_Log_Lever
的接口,實(shí)現(xiàn)打印級(jí)別的適時(shí)調(diào)整。
4、打印信息添加
在輸出我們正常打印信息之前,我們也需要添加一些時(shí)間信息,打印級(jí)別信息等。
?
通過以上代碼,將時(shí)間和打印級(jí)別信息都添加到字符串之前。
輸出效果如下:
5、顏色定義
顏色控制如何做?
很簡(jiǎn)單,在輸出字符串前,符合特定的顏色控制格式,就可以更改打印顏色了。
控制命令以
\033[
開頭,以m
結(jié)尾,而中間則是屬性碼,屬性代碼之間使用;
分隔,如\033[1;34;42m
,最后以默認(rèn)顏色\033[0m
結(jié)尾,以避免影響后面正常打??!
顯示方式
意義顯示方式默認(rèn)0高亮顯示1下劃線4閃爍5反白顯示7不可見8
前景顏色和背景顏色
顏色前景色背景色黑色3040紅色3141綠色3242黃色3343藍(lán)色3444紫紅色3545青藍(lán)色3646白色3747
沒有設(shè)置的話就是默認(rèn)
顏色定義
下方定義一些常用顏色,方便打印調(diào)用。
6、顏色控制
定義完各類顏色后,我們要做的就是對(duì)于不同級(jí)別的打印,選擇不同的顏色!
7、顏色打印
在選擇對(duì)應(yīng)顏色之后,我們要做的就是將這些顏色信息,放到正常打印信息的前方。
可以通過字符串拼接的函數(shù)實(shí)現(xiàn)。
這里的顏色打印,說白了就是在我們要打印的字符串前方,加入打印顏色的信息即可,打印字符串結(jié)束之后,要加上\033[0m
,來(lái)恢復(fù)默認(rèn)!
8、打印預(yù)覽
設(shè)置完成之后,我們看一下打印預(yù)覽:

9、Demo獲取
多級(jí)別彩色打印這個(gè)功能,已經(jīng)封裝成了一個(gè)API
,我們直接獲取源碼,將.c
和.h
文件加入到自己工程即可使用!
【】