自定义的log打印函数(C版本,可选打印优先级,可定义模块标签,可打印所在行数,函数)

log打印函数,功能如讲解如下:

1 可控制宏DEBUG决定log,输出等级,默认为3,输出ULOGE,ULOGW,ULOGI

2 宏LOG_TAG输出log所在的模块,可将此宏放到makefile中或.h中或.cpp赋值,

3 输出log等级,所在模块信息,所在行数,所在函数,及可添加的任意参数及信息

 

详细代码:

xxx.h

#include <stdio.h>

#include <stdarg.h>

 

//#define DEBUG 2 //可配置log等级,可将此变量放到makefile文件中配置, 0:无log, 注掉使用默认log

///#define LOG_TAG "NONE" //输出log所在的模块,可将此宏放到makefile中赋值

 

#if defined(DEBUG) //defined而不是define

#define DEBUGLEVEL DEBUG

#else

#define DEBUGLEVEL 0x07 //默认log等级,打印 LOG_ERR LOG_WARN LOG_INFO

#endif

 

/*debug levels*/

#define LOG_ERR 0x00

#define LOG_WARN 0x01

#define LOG_INFO 0x02

#define LOG_DEBUG 0x03

 

#define ULOGE(x...) dprintf_msg(LOG_ERR, x)

#define ULOGW(x...) dprintf_msg(LOG_WARN, x)

#define ULOGI(x...) dprintf_msg(LOG_INFO, x)

#define ULOGD(x...) dprintf_msg(LOG_DEBUG, x)

 

#define dprintf(level, x...) do{\

if(level < DEBUGLEVEL) \

printf(x); \

}while(0)

 

int dprintf_info(int level, const char *module, const char *pfun, const int line, const char *fmt, ...);

 

#define dprintf_msg(level, x...) do{\

if(0x01<<level & DEBUGLEVEL) \

dprintf_info(level, LOG_TAG, __FUNCTION__, __LINE__, x); \

}while(0)

 

xxx.c

 

#include "debug.h"

 

static char sprintf_buf[1024];

static const char *log_level[4] ={"ERROR", "WARN", "INFO", "DEBUG"};

 

/*打印函数,module:函数所在模块*/

int dprintf_info(int level, const char *module, const char *pfun, const int line, const char *fmt, ...)

{

va_list args;

int n;

va_start(args, fmt);

n = vsnprintf(sprintf_buf, sizeof(sprintf_buf), fmt, args);

printf("[%s][%s][%d]%s: %s", log_level[level], module, line, pfun, sprintf_buf);

va_end(args);

return n;

}

其他:如有错误,欢迎大家指正及交流。

源码下载地址:https://download.csdn.net/download/zhouchao_0321/10674641

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值