大家應該都知道,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。
更多內容在 一個優質的C++學習圈 里,來一起鉆研C++和Rust吧。