前阵子写的一个打印日志的宏,感觉不是很好用,但是可以分级输出。后期可以加入编译宏,可以方便发布debug版本和release版本。
代码如下:
#define YY_NOTICE 0
#define YY_WARNING 1
#define YY_ERROR 2
#define YYLOG(LEVEL, fmt, ...)\
do {\
if (YY_NOTICE == LEVEL)\
fprintf(stdout, "NOTICE:[%s]:[%d]:"fmt, __FILE__, __LINE__ , ##__VA_ARGS__);\
else if (YY_WARNING == LEVEL)\
fprintf(stdout, "WARNING:[%s]:[%d]:"fmt, __FILE__, __LINE__ , ##__VA_ARGS__);\
else if (YY_ERROR == LEVEL)\
fprintf(stderr, "ERROR:[%s]:[%d]:"fmt, __FILE__, __LINE__ , ##__VA_ARGS__);\
} while(0)
调用例子:
YYLOG(YY_ERROR, "open data file error\n");
int i = 0;
YYLOG(YY_NOTICE, "value is [%d]\n", i);
/* just like printf, actually I wrapped the fprintf */