总结几种log打印printf函数的宏定义
来源:互联网 发布:spss mac安装教程 编辑:程序博客网 时间:2024/05/22 04:26
http://blog.chinaunix.net/u1/38994/showart_1168773.html
- #include <stdio.h>
- #define lU_DEBUG_PREFIX "##########"
- #define LU_DEBUG_CMD 0x01
- #define LU_DEBUG_DATA 0x02
- #define LU_DEBUG_ERROR 0x04
- #define LU_PRINTF_cmd(msg...) do{if(lu_debugs & LU_DEBUG_CMD)printf(lU_DEBUG_PREFIX msg);}while(0)
- #define LU_PRINTF_data(msg...) do{if(lu_debugs & LU_DEBUG_DATA)printf(lU_DEBUG_PREFIX msg);}while(0)
- #define LU_PRINTF_error(msg...) do{if(lu_debugs & LU_DEBUG_ERROR)printf(lU_DEBUG_PREFIX msg);}while(0)
- #define lu_printf(level, msg...) LU_PRINTF_##level(msg)
- #define lu_printf2(...) printf(__VA_ARGS__)
- #define lu_printf3(...) lu_printf(__VA_ARGS__)
- static int lu_printf4_format(int prio, const char *fmt, ...);
- #define lu_printf4(prio, fmt...) lu_printf4_format(prio, fmt)
- int lu_debugs;
- int main(int argc, char *argv[])
- {
- lu_debugs |= LU_DEBUG_CMD | LU_DEBUG_DATA | LU_DEBUG_ERROR;
- printf("lu_debugs = %p\n", lu_debugs);
- lu_printf(cmd,"this is cmd\n");
- lu_printf(data,"this is data\n");
- lu_printf(error,"this is error\n");
- lu_debugs &= ~(LU_DEBUG_CMD | LU_DEBUG_DATA);
- printf("lu_debugs = %p\n", lu_debugs);
- lu_printf(cmd,"this is cmd\n");
- lu_printf(data,"this is data\n");
- lu_printf(error,"this is error\n");
- lu_printf2("aa%d,%s,%dbbbbb\n", 20, "eeeeeee", 100);
- lu_debugs |= LU_DEBUG_CMD | LU_DEBUG_DATA | LU_DEBUG_ERROR;
- printf("lu_debugs = %p\n", lu_debugs);
- lu_printf3(cmd,"this is cmd \n");
- lu_printf3(data,"this is data\n");
- lu_printf3(error,"this is error\n");
- lu_printf4(0,"luther %s ,%d ,%d\n", "gliethttp", 1, 2);
- return 0;
- }
- #include <stdarg.h>
- static int lu_printf4_format(int prio, const char *fmt, ...)
- {
- #define LOG_BUF_SIZE (4096)
- va_list ap;
- char buf[LOG_BUF_SIZE];
- va_start(ap, fmt);
- vsnprintf(buf, LOG_BUF_SIZE, fmt, ap);
- va_end(ap);
- printf("<%d>: %s", prio, buf);
- printf("------------------------\n");
- printf(buf);
- }
- #define ENTER() LOGD("enter into %s", __FUNCTION__)
- #define LOGD(...) ((void)LOG(LOG_DEBUG, LOG_TAG, __VA_ARGS__))
- #define LOG(priority, tag, ...) \
- LOG_PRI(ANDROID_##priority, tag, __VA_ARGS__)
- #define LOG_PRI(priority, tag, ...) \
- android_printLog(priority, tag, __VA_ARGS__)
- #define android_printLog(prio, tag, fmt...) \
- __android_log_print(prio, tag, fmt)
http://www.linuxsir.org/bbs/showthread.php?t=302451
这里有篇不错的文章,[经验分享]程序日志中自动记录所在函数名、文件名、行号
比上面的要好多了:
- #include <stdio.h>
- #define LOG_DEBUG "DEBUG"
- #define LOG_TRACE "TRACE"
- #define LOG_ERROR "ERROR"
- #define LOG_INFO "INFOR"
- #define LOG_CRIT "CRTCL"
- #define LOG(level, format, ...) \
- do { \
- fprintf(stderr, "[%s|%s@%s,%d] " format "\n", \
- level, __func__, __FILE__, __LINE__, ##__VA_ARGS__ ); \
- } while (0)
- int main()
- {
- LOG(LOG_DEBUG, "a=%d", 10);
- return 0;
- }
或者
- #define DBG(format, args...) fprintf(stderr,
- 总结几种log打印printf函数的宏定义
- 总结几种log打印printf函数的宏定义
- 总结几种log打印printf函数的宏定义
- 总结几种log打印printf函数的宏定义
- 总结几种log打印printf函数的宏定义
- 总结几种log打印printf函数的宏定义
- 总结几种log打印printf函数的宏定义
- #define 宏函数实现printf打印log
- printf Log打印封装
- 封装printf函数,让log可以打印文件名和行号
- printf的宏定义
- c 宏定义log日志简单打印
- iOS 宏定义~log(打印日志)
- 记录log宏定义可变参数的几种处理方式
- 添加自己的printf 打印函数
- 关于移植过程中,存在大量LCD log(不定形参...)等调试属性函数宏定义到printf
- 关于printf()函数的总结
- printf 的宏定义版本
- 在 CentOS 6.0 64bit 上搭建Sphinx环境
- JAVA面向对象笔记总结(上)
- nodeJS入门例子一—模块(Modules)
- stray in program
- website
- 总结几种log打印printf函数的宏定义
- android项目知识点
- web.xml 详细介绍
- 再谈C# ,C++和java 以及C
- DIY的MP3,用VS1003做解码器
- Android自动开关机实现
- 查询数据库中有多少个数据表
- 有关“非计算机专业如何转行做程序员”的一点思考
- oracle insert all 和insert first 的区别