自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

不會吧,你還在赤裸裸的使用Printf?

系統(tǒng) Linux
最近做了一些Linux應用開發(fā)方面的東西,感覺現(xiàn)在有點混亂,所以想將每個知識點模塊化,并且能夠搭建自己的API庫,方便以后能夠直接使用!

哈嘍,伙計們!

最近做了一些Linux?應用開發(fā)方面的東西,感覺現(xiàn)在有點混亂,所以想將每個知識點模塊化,并且能夠搭建自己的API庫,方便以后能夠直接使用!

今天主要來討論一下我們最常用的打印字符串,實現(xiàn)調(diào)試打印和顏色打印。

1、明確需求

在Linux開發(fā)環(huán)境下,我們?nèi)粘J褂玫拇蛴∽址闹饕枨罂赡苡袃煞N:

  • 多級別打?。何覀冋{(diào)試打印信息可以分為多個級別,全局設(shè)置打印級別,來實現(xiàn)打印的全局管理!
  • 多顏色打印:不同的打印級別對應不同的打印色彩,方便快速吸引開發(fā)者的注意力,快速定位問題!

基于以上兩個基本需求,我們來進行簡單封裝。

2、打印級別分類

打印級別參考內(nèi)核的分類,設(shè)置級別如下:

typedefenum {
LOG_EMERG=0, /**< Emergency */
LOG_ALERT, /**< Alert */
LOG_CRIT, /**< Critical */
LOG_ERR, /**< Error */
LOG_WARNING, /**< Warning */
LOG_NOTICE, /**< Notice */
LOG_INFO, /**< Information */
LOG_DEBUG /**< Debug */
}GLOBAL_LOG_LEVEL;

3、打印級別控制

打印級別分類后,我們定義全局變量,來全局控制打印級別。

GLOBAL_LOG_LEVEL g_log_level = LOG_INFO;        //  default log level

/**
* @brief 設(shè)置LOG打印等級
*
* @param log_level
*/

void Set_Log_Lever(GLOBAL_LOG_LEVEL log_level){

g_log_level = log_level;

}

如果需要全局調(diào)整打印級別,我們可以調(diào)用Set_Log_Lever的接口,實現(xiàn)打印級別的適時調(diào)整。

4、打印信息添加

在輸出我們正常打印信息之前,我們也需要添加一些時間信息,打印級別信息等。

constchar global_log_level_string[8][10] = {"EMERG", "ALERT", "CRIT", "ERR", "WARNING", "NOTICE", "INFO", "DEBUG"};
staticchar str_tmp[512];

// 增加時間信息
time_t now;
time(&now);
strftime(str_tmp, sizeof(str_tmp), "[%Y-%m-%d %H:%M:%S ", localtime(&now));

//加入LOG后綴信息
strcat(str_tmp,global_log_level_string[level]);
strcat(str_tmp, "] ");

通過以上代碼,將時間和打印級別信息都添加到字符串之前。

輸出效果如下:

[2022-10-2109:13:54 INFO] log info output

 5、顏色定義

顏色控制如何做?

很簡單,在輸出字符串前,符合特定的顏色控制格式,就可以更改打印顏色了。

printf("\033[顯示方式;字背景顏色;字體顏色m…\033[0m")

控制命令以\033[?開頭,以m?結(jié)尾,而中間則是屬性碼,屬性代碼之間使用;?分隔,如\033[1;34;42m?,最后以默認顏色\033[0m結(jié)尾,以避免影響后面正常打??!

顯示方式

意義

顯示方式

默認

0

高亮顯示

1

下劃線

4

閃爍

5

反白顯示

7

不可見

8

 前景顏色和背景顏色

顏色

前景色

背景色

黑色

30

40

紅色

31

41

綠色

32

42

黃色

33

43

藍色

34

44

紫紅色

35

45

青藍色

36

46

白色

37

47

沒有設(shè)置的話就是默認

顏色定義

下方定義一些常用顏色,方便打印調(diào)用。

#define LOG_CLRSTR_NONE         "\033[0m"               // 默認顯示
#define LOG_CLRSTR_RED "\033[0;42;31m" // 綠紅色
#define LOG_CLRSTR_GREEN "\033[0;32m" // 綠色
#define LOG_CLRSTR_BLUE "\033[0;32;34m" // 藍色
#define LOG_CLRSTR_DARK_GRAY "\033[1;30m" // 灰色
#define LOG_CLRSTR_CYAN "\033[0;36m" // 青色
#define LOG_CLRSTR_PURPLE "\033[0;35m" // 紫色
#define LOG_CLRSTR_BROWN "\033[0;33m" // 棕色
#define LOG_CLRSTR_YELLOW "\033[5;42;33m" // 綠黃色
#define LOG_CLRSTR_WHITE "\033[1;37m" // 白色

6、顏色控制

定義完各類顏色后,我們要做的就是對于不同級別的打印,選擇不同的顏色!

//LOG類型判斷,選擇不同打印顏色
switch (level)
{
case LOG_EMERG:
log_color = LOG_CLRSTR_RED;
break;
case LOG_ALERT:
log_color = LOG_CLRSTR_BLUE;
break;
case LOG_CRIT:
log_color = LOG_CLRSTR_CYAN;
break;
case LOG_ERR:
log_color = LOG_CLRSTR_RED;
break;
case LOG_WARNING:
log_color = LOG_CLRSTR_PURPLE;
break;
case LOG_NOTICE:
log_color = LOG_CLRSTR_YELLOW;
break;
case LOG_INFO:
log_color = LOG_CLRSTR_DARK_GRAY;
break;
case LOG_DEBUG:
log_color = LOG_CLRSTR_BROWN;
break;
default:
log_color = LOG_CLRSTR_GREEN;
break;
}

 7、顏色打印

在選擇對應顏色之后,我們要做的就是將這些顏色信息,放到正常打印信息的前方。

可以通過字符串拼接的函數(shù)實現(xiàn)。

//  重新設(shè)置標準輸出
sprintf(str_uart, "%s",log_color);
strcat(str_uart, str_tmp);

...

strcat(str_uart,LOG_CLRSTR_NONE);
strcat(str_uart, "\r\n");
printf("%s",str_uart);

這里的顏色打印,說白了就是在我們要打印的字符串前方,加入打印顏色的信息即可,打印字符串結(jié)束之后,要加上\033[0m,來恢復默認!

8、打印預覽

設(shè)置完成之后,我們看一下打印預覽:

圖片

 

9、Demo獲取

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

責任編輯:武曉燕 來源: 嵌入式藝術(shù)
相關(guān)推薦

2021-08-04 08:31:10

MySQL數(shù)據(jù)庫日志

2021-12-06 17:44:56

MHAMySQL高可用

2021-09-07 11:20:02

binlogMySQL數(shù)據(jù)庫

2025-02-19 12:40:33

JWT

2009-07-19 16:08:18

2020-08-05 14:28:32

編程程序員代碼

2019-09-21 21:32:34

數(shù)據(jù)庫SQL分布式

2016-10-08 22:10:51

2024-03-04 00:05:00

馬斯克AI

2022-10-26 08:16:58

jar包依賴關(guān)系Maven

2021-07-18 22:47:08

大數(shù)據(jù)電商算法

2015-12-31 13:38:59

創(chuàng)新大公司

2020-02-21 14:15:40

SimpleDateFJava多線程

2020-09-14 06:52:42

Java對象代碼

2021-11-26 10:43:35

程序員技能開發(fā)者

2010-08-03 10:38:16

2011-03-07 09:44:09

赤裸的密碼密碼

2022-01-25 12:41:31

ChromeResponse接口

2021-10-10 22:02:25

比特幣區(qū)塊鏈科技

2016-12-20 19:59:08

科技WIFI手機
點贊
收藏

51CTO技術(shù)棧公眾號