zoukankan      html  css  js  c++  java
  • 【代码技巧】一段代码实现分级日志输出

    #define LOG_FAULT   (1 << 0)
    #define LOG_ERROR   (1 << 1)
    #define LOG_WARN    (1 << 2)
    #define LOG_INFO    (1 << 3)
    #define LOG_DEBUG   (1 << 4)
                                 
    #define TRACE(trace,fmt, ...)                                               
            do {                                                                
                if ((global_trace & (trace)) == LOG_FAULT)                      
                    printf("[FAULT] <%s> "fmt"", __FUNCTION__, ##__VA_ARGS__);          
                else if ((global_trace & (trace)) == LOG_ERROR)                 
                    printf("[ERROR] <%s> "fmt"", __FUNCTION__, ##__VA_ARGS__);          
                else if ((global_trace & (trace)) == LOG_WARN)                  
                    printf("[WARN]  <%s> "fmt"", __FUNCTION__, ##__VA_ARGS__);          
                else if ((global_trace & (trace)) == LOG_INFO)                  
                    printf("[INFO]  <%s> "fmt"", __FUNCTION__, ##__VA_ARGS__);          
                else if ((global_trace & (trace)) == LOG_DEBUG)                 
                    printf("[DEBUG] <%s> "fmt"", __FUNCTION__, ##__VA_ARGS__);                                                                                                            
            } while(0)  

    当然严格说来,这不能算日志输出,只能算多级打印消息。

    global_trace可以是宏,也可以是变量,假如是宏的话,代表在编译时指定输出级别,比如我们调试代码时设定为0x1F,就是所有消息全部输出,但是交给用户的可以设为0xF,这时debug消息就不会输出。

    但是也可以是变量,那么用户就能在启动时决定输出哪些级别的信息。

    总之我觉得这段代码是很精巧的值得推荐。

  • 相关阅读:
    [hdu5312]数的拆分,数学推导
    [POJ1038]状压DP
    [hdu2112]最短路
    [hdu1532]最大流
    [hdu5256]LIS模型
    [hdu5255]枚举
    [hdu5254]BFS
    [hdu5270]按位统计,容斥,归并
    Elasticsearch在Centos 7上的安装与配置
    手动安装java1.8
  • 原文地址:https://www.cnblogs.com/likeyiyy/p/3851081.html
Copyright © 2011-2022 走看看