后面哪个 ”\033[0m” 是对前面哪个颜色载入的结束,恢复到终端原来的背景色和字体色,可以把后面哪个修改成如下试试:
#define DEBUG_ERR(fmt, args...) printf("\033[46;31m[%s:%d]\033[40;37m "#fmt" errno=%d, %m\r\n", __func__, __LINE__, ##args, errno, errno);
下面列出 ascii code 的颜色值:
字背景颜色范围:40----49 字颜色:30-----------39
40:黑 30:黑
41:深红 31:红
42:绿 32:绿
43:黄色 33:黄
44:蓝色 34:蓝色
45:紫色 35:紫色
46:深绿 36:深绿
47:白色 37:白色
记忆颜色格式太麻烦了,我们将它搞成宏定义吧,这样以后用起来就方便得多。
#define NONE "\e[0m" #define BLACK "\e[0;30m" #define L_BLACK "\e[1;30m" #define RED "\e[0;31m" #define L_RED "\e[1;31m" #define GREEN "\e[0;32m" #define L_GREEN "\e[1;32m" #define BROWN "\e[0;33m" #define YELLOW "\e[1;33m" #define BLUE "\e[0;34m" #define L_BLUE "\e[1;34m" #define PURPLE "\e[0;35m" #define L_PURPLE "\e[1;35m" #define CYAN "\e[0;36m" #define L_CYAN "\e[1;36m" #define GRAY "\e[0;37m" #define WHITE "\e[1;37m" #define BOLD "\e[1m" #define UNDERLINE "\e[4m" #define BLINK "\e[5m" #define REVERSE "\e[7m" #define HIDE "\e[8m" #define CLEAR "\e[2J" #define CLRLINE "\r\e[K" //or "\e[1K\r" #define DEBUG_ERROR(fmt, args...) do{ \ printf(RED"[%s]:"NONE, __FUNCTION__); \ printf(fmt, ##args); \ }while(0);
效果:
所以,我建议将fatal一类致命错误级别的log用高亮颜色标注,一旦有这类错误发生我们也能第一时间察觉。