今天在写代码的时候,使用printf打印log信息,发现到处都是printf的输出,不方便查看log信息,想到以前项目中根据log等级来区分的方法,并打印代码所在行,函数,文件名。从网上又查找了其他的宏定义颜色的资料,将颜色用来区分log等级,在此记录下。
代码如下:
#define ESC_START "\033["
#define ESC_END "\033[0m"
#define COLOR_FATAL "31;40;5m"
#define COLOR_ALERT "31;40;1m"
#define COLOR_CRIT "31;40;1m"
#define COLOR_ERROR "31;40;1m"
#define COLOR_WARN "33;40;1m"
#define COLOR_NOTICE "34;40;1m"
#define COLOR_INFO "32;40;1m"
#define COLOR_DEBUG "36;40;1m"
#define COLOR_TRACE "37;40;1m"
#define TRACE_INFO(format, args...) (printf( ESC_START COLOR_INFO "[INFO]-[%s]-[%s]-[%d]: \n" format ESC_END, __FILE__, __FUNCTION__ , __LINE__, ##args))
#define TRACE_DEBUG(format, args...) (printf( ESC_START COLOR_DEBUG "[DEBUG]-[%s]-[%s]-[%d]:\n" format ESC_END, __FILE__, __FUNCTION__ , __LINE__, ##args))
#define TRACE_WARN(format, args...) (printf( ESC_START COLOR_WARN "[WARN]-[%s]-[%s]-[%d]:\n" format ESC_END, __FILE__, __FUNCTION__ , __LINE__, ##args))
#define TRACE_ERROR(format, args...) (printf( ESC_START COLOR_ERROR "[ERROR]-[%s]-[%s]-[%d]:\n" format ESC_END, __FILE__, __FUNCTION__ , __LINE__, ##args))
使用举例:
TRACE_INFO();
TRACE_WARN("%d\n",10);
TRACE_ERROR("%s\n","error");
TRACE_DEBUG("Debug\n");
测试结果:
遗留问题:打印文件名的时候使用__FILE__,会将文件目录一起打印出来,目前还没找到方法只打印文件名,不打印文件目录。
遗留问题已经解决,参看:https://blog.csdn.net/cozhzh/article/details/88398830