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

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

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

哈嘍,伙計們!

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

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

1、明確需求

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

  • 多級別打印:我們調試打印信息可以分為多個級別,全局設置打印級別,來實現打印的全局管理!
  • 多顏色打印:不同的打印級別對應不同的打印色彩,方便快速吸引開發者的注意力,快速定位問題!

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

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結尾,以避免影響后面正常打印!

顯示方式

意義

顯示方式

默認

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

2024-03-04 00:05:00

馬斯克AI

2022-10-26 08:16:58

jar包依賴關系Maven

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技術棧公眾號

主站蜘蛛池模板: www国产成人免费观看视频 | 成人在线观看欧美 | 久久中文字幕一区 | 精品亚洲一区二区三区四区五区 | 久久99网 | 亚洲综合国产 | 国产欧美精品一区二区色综合朱莉 | 精品综合视频 | 亚洲精品在线看 | 国产色在线| 久久精品国产99国产精品亚洲 | 日韩图区 | 午夜精品久久久久久久久久久久久 | 天天拍天天操 | 天天操天天摸天天干 | 成人在线视频网站 | 美女艹b | 国产中文字幕亚洲 | 亚洲视频精品 | 国产精品日韩 | 婷婷桃色网 | 日韩有码一区二区三区 | 日韩在线一区二区 | 国产乱码精品1区2区3区 | 超碰精品在线观看 | 高清不卡毛片 | 亚洲区一区二 | 成人欧美一区二区三区在线播放 | 福利网站导航 | 在线播放第一页 | 中文视频在线 | 亚洲精品久久久 | 色又黄又爽网站www久久 | 欧美成人免费在线视频 | 亚洲视频一区二区三区四区 | 欧美亚洲激情 | 国产高清视频 | 国产欧美日韩精品一区 | 日本天天操 | 国产激情精品一区二区三区 | 亚洲播放一区 |