大家应该都知道,Boost是个准标准库,一般Boost里比较先进的模块可能会进下一代的C 标准。
因为我最近在开发Log相关的功能,所以业余时间也在看看市面上的Log模块是怎么设计的。
关于Log,想必大多数C 开发都在使用glog或者spdlog,最近我发现Boost中也有个Log模块,于是看了看,发现功能好强大。
Log模块整体设计如图:
图片来源于:https://www.boost.org/doc/libs/1_79_0/libs/log/doc/html/log/design.html
图中可以发现,整个log的模块划分了多层架构,source、core、sink。
可以配置多个source,还可以配置多个sink。
直接看下它的编译与使用:
首先去boost官网https://github.com/boostorg/boost下载源码。
之后执行bootstrap.sh脚本后会生成b2可执行程序,执行./b2 再install就ok。
那想单独使用Log模块怎么办,这里拿example里的main.cpp举例:
可以使用这个命令来编译:
clang -std=c 11 -DBOOST_LOG_DYN_LINK main.cpp -lboost_log -lpthread -lboost_log_setup -lboost_thread -lboost_system
然后再执行:
大家最好对照着示例代码:https://github.com/boostorg/log/blob/fa675cca2b58d6c087fc63de56e894fa7fb607f3/example/advanced_usage/main.cpp
如果自己项目中想使用Log的话,个人认为可以在spdlog或者Boost中二选一,如果仅使用log,而不使用其他功能,可以使用spdlog。如果项目中本身就依赖了Boost,可以考虑直接使用boost中的log。