一个简单的控制台日志库
- 将位于
include
目录中的 xf_log_console.h 头文件拷贝到自己的项目中,并在需要打印日志的源文件中引用它。 - 给项目添加预定义宏
_xf_log_console
。 - 使用宏
_xfLog
输出日志,就像使用printf
函数一样,例如:_xfLog("a text"); _xfLog("output: %s, number: %d", "string", 7);
- 适用于简单的日志输出场景,利用宏
_xf_log_console
控制日志是否输出。即:对于_xfLog
打印语句,在定义了该宏时生效,未定义时将被编译器忽略。 _xfLog
打印语句是线程安全的,利用全局锁保证打印顺序。- 默认输出当前时间,精确到毫秒,以及当前线程id。示例:
01:23:45.678(0x34321523)-> log msg
。 - 单条日志最大长度不能超过 1K(1024个字符)。
- 对于常量
format
字符串结合C++17
特性,可以得到类似printf
的编译期反馈。例如对于下面的代码:使用 clang 9.0 进行编译将会得到类似下面的警告:long long x = 100; _xfLog("output: %s, number: %d", "string", x);
./example/example.cpp:15:55: warning: format specifies type 'int' but the argument has type 'long long' [-Wformat] _xfLog("output: %s, number: %d", "string", x); ~~ ^ %lld