分级别打印日志

接口定义log.h

该文件中定义了打印日志的接口。

#ifndef _LOG_H_
#define _LOG_H_

#define INFO_OUTPUT      3
#define WARNING_OUTPUT   2
#define DEBUG_OUTPUT     1
#define ERROR_OUTPUT     0

#define LOG_INFO(args,...)\
do{\
    if (DEBUG_LEVEL >= INFO_OUTPUT)\
    {\
        printf("[I] "args" (%s, %d)\n", ##__VA_ARGS__, __FILE__, __LINE__);\
    }\
}while(0)

#define LOG_WARNING(args,...)\
do{\
    if (DEBUG_LEVEL >= WARNING_OUTPUT)\
    {\
        printf("[W] "args" (%s, %d)\n", ##__VA_ARGS__, __FILE__, __LINE__);\
    }\
}while(0)

#define LOG_DEBUG(args,...)\
do{\
    if (DEBUG_LEVEL >= DEBUG_OUTPUT)\
    {\
        printf("[D] "args" (%s, %d)\n", ##__VA_ARGS__, __FILE__, __LINE__);\
    }\
}while(0)

#define LOG_ERROR(args,...)\
do{\
    if (DEBUG_LEVEL >= ERROR_OUTPUT)\
    {\
        printf("[E] "args" (%s, %d)\n", ##__VA_ARGS__, __FILE__, __LINE__);\
    }\
}while(0)

#endif

使用实例a.c

 #include <stdio.h>
 #include "log.h"
 /*通过这个宏来控制打印日志的级别,这个宏也可以在编译的时候当作编译选项添加进去。*/
 #define DEBUG_LEVEL INFO_OUTPUT
 int main()
 {
     LOG_INFO("I'm Info");
     LOG_WARNING("I'm Warning");
     LOG_DEBUG("I'm Debug");
     LOG_ERROR("I'm Error");
     return 0;
 }

编译a.c

gcc -c a.c

执行编译的结果a.out

有些终端有关键字高亮的话,看起来很是舒服,这里看不到结果,我贴图大家参考下,顺便说下,我用的是MobaXterm,感觉用起来还不错。

[I] I'm Info (a.c, 6)
[W] I'm Warning (a.c, 7)
[D] I'm Debug (a.c, 8)
[E] I'm Error (a.c, 9)

我的这个Debug不能高亮 不知道怎么设置, 如果你知道了麻烦告诉我下-
我的这个Debug不能高亮 不知道怎么设置, 如果你知道了麻烦告诉我下~

通过编译选项将宏加到代码中去,请看下面的编译命令

gcc a.c -D DEBUG_LEVEL=INFO_OUTPUT

这里的INFO_OUTPUT也可以写成具体的数字,不过这样更明了一些。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值