成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

哈嘍,伙計們!

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

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

1、明確需求

在Linux開發環境下,我們日常使用的打印字符串的主要需求可能有兩種:

  • 多級別打?。何覀冋{試打印信息可以分為多個級別,全局設置打印級別,來實現打印的全局管理!
  • 多顏色打?。翰煌拇蛴〖墑e對應不同的打印色彩,方便快速吸引開發者的注意力,快速定位問題!

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

2、打印級別分類

打印級別參考內核的分類,設置級別如下:

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 設置LOG打印等級
*
* @param log_level
*/

void Set_Log_Lever(GLOBAL_LOG_LEVEL log_level){

g_log_level = log_level;

}

如果需要全局調整打印級別,我們可以調用Set_Log_Lever的接口,實現打印級別的適時調整。

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?結尾,而中間則是屬性碼,屬性代碼之間使用;?分隔,如\033[1;34;42m?,最后以默認顏色\033[0m結尾,以避免影響后面正常打?。?/p>

顯示方式

意義

顯示方式

默認

0

高亮顯示

1

下劃線

4

閃爍

5

反白顯示

7

不可見

8

 前景顏色和背景顏色

顏色

前景色

背景色

黑色

30

40

紅色

31

41

綠色

32

42

黃色

33

43

藍色

34

44

紫紅色

35

45

青藍色

36

46

白色

37

47

沒有設置的話就是默認

顏色定義

下方定義一些常用顏色,方便打印調用。

#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、顏色打印

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

可以通過字符串拼接的函數實現。

//  重新設置標準輸出
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);

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

8、打印預覽

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

圖片

 

9、Demo獲取

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

責任編輯:武曉燕 來源: 嵌入式藝術
相關推薦

2021-08-04 08:31:10

MySQL數據庫日志

2021-12-06 17:44:56

MHAMySQL高可用

2021-09-07 11:20:02

binlogMySQL數據庫

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

數據庫SQL分布式

2016-10-08 22:10:51

2022-10-26 08:16:58

jar包依賴關系Maven

2024-03-04 00:05:00

馬斯克AI

2021-07-18 22:47:08

大數據電商算法

2015-12-31 13:38:59

創新大公司

2020-02-21 14:15:40

SimpleDateFJava多線程

2020-09-14 06:52:42

Java對象代碼

2021-11-26 10:43:35

程序員技能開發者

2010-08-03 10:38:16

2011-03-07 09:44:09

赤裸的密碼密碼

2022-01-25 12:41:31

ChromeResponse接口

2016-12-20 19:59:08

科技WIFI手機

2021-10-10 22:02:25

比特幣區塊鏈科技
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一级片片 | 日本精品视频 | 日韩一区二区在线视频 | 成人国产精品久久 | 国产乱精品一区二区三区 | 亚洲成年人免费网站 | 天天干天天想 | 性色av网站 | 特黄视频 | 天天综合久久网 | 久久久激情 | 国产精品久久久久久久久免费 | 欧美国产精品 | 亚洲一区二区三区在线 | 国产日韩精品在线 | 欧美日韩视频 | 精品久久久久久久久久久久久久久久久 | 成人在线播放网址 | 亚洲视频在线看 | 日韩毛片 | 亚洲精品18 | 久产久精国产品 | 久久99国产精一区二区三区 | 欧美激情一区二区三级高清视频 | 久久噜| 亚洲一区二区三区四区五区中文 | 国产精品波多野结衣 | 免费观看一级毛片 | 久久黄网 | 啪啪精品| 免费视频一区二区 | 国产日韩欧美一区 | 天天看天天摸天天操 | 在线免费观看黄视频 | 亚洲欧美日韩久久 | 久久人操| 夜久久| 亚洲精品在线视频 | 亚洲久久久 | 91网站在线观看视频 | 韩日视频在线观看 |