使用printf让C语言也能像Android一样按级别输出Log

多年前项目中写的代码了,现在整理CSDN博客,重新记录一下。

#include <stdio.h>

#define LOG_LEVEL 0x0F

#define LOG_LVL_ERROR 0x01
#define LOG_LVL_WARN  0x02
#define LOG_LVL_INFO  0x04
#define LOG_LVL_DEBUG 0x08

#if (LOG_LEVEL & LOG_LVL_ERROR)
#define LOGE(format, ...) \
    do {
    
     \
        fprintf(stderr, "ERROR   %-16s %4d   " format "\n", __FILE__, __LINE__, ##__VA_ARGS__ ); \
    } while (0)
#else
#define LOGE(format, ...) \
    do {
    
     } while (0)
#endif

#if (LOG_LEVEL & LOG_LVL_WARN)
#define LOGW(format, ...) \
    do {
    
     \
        fprintf(stderr, "WARNING %-16s %4d   " format "\n", __FILE__, __LINE__, ##__VA_ARGS__ ); \
    } while (0)
#else
#define LOGW(format, ...) \
    do {
    
     } while (0)
#endif

#if (LOG_LEVEL & LOG_LVL_INFO)
#define LOGI(format, ...) \
    do {
    
     \
        fprintf(stderr, "INFO    %-16s %4d   " format "\n", __FILE__, __LINE__, ##__VA_ARGS__ ); \
    } while (0)
#else
#define LOGI(format, ...) \
    do {
    
     } while (0)
#endif

#if (LOG_LEVEL & LOG_LVL_DEBUG)
#define LOGD(format, ...) \
    do {
    
     \
        fprintf(stderr, "DEBUG   %-16s %4d   " format "\n", __FILE__, __LINE__, ##__VA_ARGS__ ); \
    } while (0)
#else
#define LOGD(format, ...) \
    do {
    
     } while (0)
#endif

猜你喜欢

转载自blog.csdn.net/cshoney/article/details/90113424
今日推荐