日志模块的使用非常简单, 不需要初始化, 可以直接使用相关的宏输出, 并且会自动添加结尾的换行. 所有日志操作都是线程安全的, 不需要额外的 mutex lock
#include <clib/clib.h>
int main(int argc, char **argv) {
DEBUG("this is debug message");
INFO("this is info message");
WARNING("this is warning message");
ERR("this is error message");
return 0;
}
日志包含四个等级 DEBUG INFO WARNING ERR (逐级提高), 对应的输出格式及颜色如下
日志并没有记录日期, PID 等其他信息, 只记录了当前 log 信息的位置和函数名.
如果使用 vscode 可以通过该内容 log.c:6 快速跳转到对应的位置NOTE
如果不希望输出到默认终端, 可以通过 log_init 将该信息保存到一个日志文件当中
#include <clib/clib.h>
int main(int argc, char **argv) {
log_init("log_file.txt");
INFO("hello world");
return 0;
}
对于非 tty 不会输出颜色
可以使用 log_set_level 设置不同的日志等级, 默认为 DEBUG. 四个等级从低到高为
#include <clib/clib.h>
int main(int argc, char **argv) {
log_set_level(LOG_INFO);
DEBUG("debug"); // 不会显示
INFO("info");
return 0;
}
一个完善的日志还需要考虑很多其他问题, 比如同时输出到不同位置(终端,文件), 不同等级分类日志, 定时日志, 定时压缩日志文件等等. 考虑到简洁性暂时不考虑实现.