程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 分享自己寫的一個簡化版LOG輸出宏,簡化版log輸出宏

分享自己寫的一個簡化版LOG輸出宏,簡化版log輸出宏

編輯:關於C語言

分享自己寫的一個簡化版LOG輸出宏,簡化版log輸出宏


分享自己寫的一個簡化版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,使用也更復雜:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved