\033[显示方式;前景色;背景色m
显示方式:
0(默认值)、1(高亮)、22(非粗体)、4(下划线)、24(非下划线)、5(闪烁)、25(非闪烁)、7(反显)、27(非反显)
前景色:
30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(洋红)、36(青色)、37(白色)
背景色:
40(黑色)、41(红色)、42(绿色)、 43(黄色)、44(蓝色)、45(洋红)、46(青色)、47(白色)
直接上代码:
#include<stdio.h>
#define HL_RED "\033[1;31m" //高亮红色
#define HL_GREEN "\033[1;32m" //高亮绿色
#define HL_YEL "\033[1;33m" //高亮黄色
#define BROWN "\033[0;33m" //灰色
enum LOG_LEVEL
{
LOG_LEVEL_OFF = 0,
LOG_LEVEL_ERR,
LOG_LEVEL_WARN,
LOG_LEVEL_INFO,
LOG_LEVEL_DBG,
LOG_LEVEL_ALL,
};
static const int log_level = LOG_LEVEL_ALL;
#define LOGE(fmt, args ...) \
do \
{ \
if(log_level >= LOG_LEVEL_ERR) \
printf(HL_RED "WARN (%s|%d): " \
fmt, __func__, __LINE__, ## args); \
} \
while(0)
#define LOGW(fmt, args ...) \
do \
{ \
if(log_level >= LOG_LEVEL_WARN) \
printf(HL_YEL "WARN (%s|%d): " \
fmt, __func__, __LINE__, ## args); \
} \
while(0)
#define LOGI(fmt, args ...) \
do \
{ \
if(log_level >= LOG_LEVEL_INFO) \
printf(HL_GREEN "WARN (%s|%d): " \
fmt, __func__, __LINE__, ## args); \
} \
while(0)
#define LOGD(fmt, args ...) \
do \
{ \
if(log_level >= LOG_LEVEL_DBG) \
printf(BROWN "WARN (%s|%d): " \
fmt, __func__, __LINE__, ## args); \
} \
while(0)
int main(){
LOGE("hello:linux!\n");
LOGW("hello:linux!\n");
LOGI("hello:linux!\n");
LOGD("hello:linux!\n");
return 0;
}
运行结果:
WARN (main|59): hello:linux!
WARN (main|60): hello:linux!
WARN (main|61): hello:linux!
WARN (main|62): hello:linux!
注意在vs中:
#define debug_msg(fmt, …) printf("%s[%d]:"fmt,FILE,LINE,## VA_ARGS)