• 【代码技巧】一段代码实现分级日志输出


    #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消息就不会输出。

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

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

  • 相关阅读:
    anltr 解析MYSQL
    MYSQL 主从复制
    Java happens-before
    傅里叶分析-数据通信的理论基础
    Java jdk常用工具集合
    kafka报错 日志压缩报错直接退出
    linux centos7开启防火墙端口
    mysql_取分组后的前几行值
    数据库隔离级别
    mysql删除重复数据
  • 原文地址:https://www.cnblogs.com/likeyiyy/p/3851081.html
Copyright © 2020-2023  润新知