简易C/C++日志代码实现
2016-03-06 19:10
399 查看
C/C++没有标准的日志库,很多人使用printf直接代替。但它有个缺点,就是不能对输出信息进行分级控制。使用log4cpp等似乎太重量级了。这里我给一个我自己经常使用的几个简单的日志函数
[cpp] view
plain copy
#include <stdio.h>
#if defined(DEBUG)
#define debug(...) {fprintf(stderr, __VA_ARGS__); fflush(stderr);}
#else
#define debug(...)
#endif
#if defined(DEBUG) || defined(INFO)
#define info(...) { fprintf(stderr, __VA_ARGS__); fflush(stderr);}
#else
#define info(...)
#endif
#if defined(DEBUG) || defined(INFO) || defined(ERROR)
#define error(...) { fprintf(stderr, __VA_ARGS__); fflush(stderr);}
#else
#define error(...)
#endif
main()
{
debug("1 %d\n", 23);
info("2 %d\n", 23);
error("3 %d\n", 23);
}
在makefile或工程中定义DEBUG、INFO或ERROR分别指定不同的输出级别,如果不定义则什么也不输出。
[cpp] view
plain copy
#include <stdio.h>
#if defined(DEBUG)
#define debug(...) {fprintf(stderr, __VA_ARGS__); fflush(stderr);}
#else
#define debug(...)
#endif
#if defined(DEBUG) || defined(INFO)
#define info(...) { fprintf(stderr, __VA_ARGS__); fflush(stderr);}
#else
#define info(...)
#endif
#if defined(DEBUG) || defined(INFO) || defined(ERROR)
#define error(...) { fprintf(stderr, __VA_ARGS__); fflush(stderr);}
#else
#define error(...)
#endif
main()
{
debug("1 %d\n", 23);
info("2 %d\n", 23);
error("3 %d\n", 23);
}
在makefile或工程中定义DEBUG、INFO或ERROR分别指定不同的输出级别,如果不定义则什么也不输出。
相关文章推荐
- 基本排序算法总结(C/C++)
- 较高人工智能的人机博弈程序实现(多个算法结合)含C++源码
- c语言面试题2
- c语言之 malloc函数详解
- 数据库和HTML还有C语言总结
- 跨平台C、C++代码注意的事项及如何编写跨平台的C/C++代码
- 折半查找法/C语言版
- C语言之strlen和sizeof有什么区别
- 《C语言点滴》学习笔记
- C语言基础01
- C语言实现使用带头结点的单链表来构造栈结构
- c语言:用fgetc函数从键盘逐个输入字符,用fputc函数写到磁盘文件
- c++ string
- Add Two Numbers
- C++11 与 C99的兼容
- 归并排序
- c语言之sizeof运算符
- C++设计模式之装饰模式
- 《编写高质量代码:改善C++程序的150个建议》读书笔记6
- uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型c++/c? (在andriod源码中)