码迷,mamicode.com
首页 > 其他好文 > 详细

分享自己写的一个简化版LOG输出宏

时间:2016-02-26 18:29:58      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

分享自己写的一个简化版LOG输出宏

extern int verbose;

#define DBG(...) XLOG(4, "DBG", __VA_ARGS__)
#define INFO(...) XLOG(3, "INF", __VA_ARGS__)
#define WRN(...) XLOG(2, "WRN", __VA_ARGS__)
#define ERR(...) XLOG(1, "ERR", __VA_ARGS__)
#define OUT(...) XLOG(0, "OUT", __VA_ARGS__)
#define XLOG(level, LOG_LEVEL, ...) do{    if(verbose >= (level)) {        time_t _tm = 0;        struct tm log_tm = {0};        time(&_tm);        localtime_r(&_tm, &log_tm);        fprintf(stdout, "%4d-%2.2d-%2.2d %2.2d:%2.2d:%2.2d %3s | ", log_tm.tm_year+1900, log_tm.tm_mon+1, log_tm.tm_mday, log_tm.tm_hour, log_tm.tm_min, log_tm.tm_sec, LOG_LEVEL);        fprintf(stdout, __VA_ARGS__);}    }}while(0)

verbose是全局变量,用来限制输出等级,小于此等级的信息会被输出,例如,如果verbose = 4,则全部信息都会输出,如果verbose = 3,则DBG信息不会输出。

 

使用方法同printf,只是把printf替换为DBG、INFO等。

DBG("abcdefg%d.\n", a);

 

这是一个非常简化版的,并且只能输出到屏幕,只需要将其加到.h文件就可以使用。

另一个版本需要.c和.h,使用也更复杂:

技术分享

分享自己写的一个简化版LOG输出宏

标签:

原文地址:http://www.cnblogs.com/linux-c/p/5221208.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!