g3log作者對spdlog的對比和嘲諷
乙個lockfree的queue,被g3log的作者推薦
簡單地對log4cplus和g3log的效能做了測試,列印1百萬條日誌資訊所需時間如下:
linux
windows
log4cplus
同步4s
6s非同步
1.9s
64sg3log
非同步2.3s
待做對比說明:
1. linux用的虛擬機器,作業系統為red hat enterprise linux server release 6.7 (santiago), 8核cpu,記憶體32g,intel(r) xeon(r) cpu e5-2690 v4 @ 2.60ghz。
2. windows用的實體機,作業系統為win7, intel(r) core(tm) i5-6500, 3.2ghz, 記憶體16g。
3. 由於windows和linux所用配置完全不一樣,可能對於兩個作業系統之間的對比沒有什麼可比性。
4. log4cplus在windows下非同步模式非常的慢(經過多次跑都差不多的慢,把配置檔案裡的queuelimit增加到1百萬也沒用),不知道瓶頸是在**,也可能是我的程式或配置有問題。
log4cplus的測試程式如下:
#include #include #include #include #include #include int readfile(const char* file_path, std::vector* o_data)
in.seekg(0, std::ifstream::end);
size_t size = (size_t) in.tellg ();
in.seekg(0, std::ifstream::beg);
o_data->resize (size);
in.read(&(*o_data)[0], size);
if (in.gcount() != size)
return 0;
}int main(int argc, char* ar**)
std::string config_path(ar**[1]);
std::string log_config;
std::vectordata;
int res = readfile(config_path.c_str(), &data);
if (0 != res)
std::string config_str(&data[0], data.size());
std::stringstream css(config_str);
boost::property_tree::ptree pt;
boost::property_tree::read_ini(css, pt);
std::stringstream ss;
boost::property_tree::write_ini(ss, pt.get_child("log4cplus"));
log4cplus::initialize();
log4cplus::propertyconfigurator pc(ss);
pc.configure();
log4cplus::logger logger = log4cplus::logger::getinstance("global");
for(int i=0; i<1000000; ++i)
log4cplus::logger::shutdown();
return 0;
}
配置檔案如下:
## synchronous log properties.
[log4cplus_sync]
log4cplus.logger.global = info, sa
## asynchronous log properties.
[log4cplus]
log4cplus.logger.global = info, aa
linux下的makefile內容如下:
main:
g++ -std=c++11 -wall -o3 -l/home/wqf/usr/lib/boost_1_67_0/lib/ -lboost_system -lboost_filesystem -lboost_locale -lboost_date_time -llog4cplus main.cc -o main
g3log的測試程式如下:
#include #include #include #include #include std::string path_to_log_file = "./";
std::string log_file = "g3logfile";
std::unique_ptrworker;
void log_init()
void log_shutdown()
int main(int argc, char* ar**)
log_shutdown();
return 0;
}
linux下的makefile內容如下:
main:
g++ -std=c++14 -wall -o3 -i/home/wqf/usr/lib/g3log/include -l/home/wqf/usr/lib/g3log/lib -lg3logger main.cc -o main
log4cplus安裝測試
先介紹一下它的基本要素。layouts 布局器,控制輸出訊息的格式.如螢幕,檔案等等 logger 記錄器,儲存並跟蹤物件日誌資訊變更的實體,當你需要對乙個物件進行 記錄時,就需要生成乙個logger。categories 分類器,層次化 hierarchy 的結構,用於對被記錄資訊的分類,層次中 ...
開源日誌系統 log4cplus 二
本文介紹了使用log4cplus有六個步驟,並提供了一些例子引導你了解log4cplus的基本使用。基本使用 使用log4cplus有六個基本步驟 下面通過一些例子來了解log4cplus的基本使用。using namespace log4cplus using namespace log4cplu...
開源日誌系統 log4cplus 七
經過短暫的熟悉過程,log4cplus已經被成功應用到了我的專案中去了,效果還不錯,除了上文提及的 功能之外,下面將介紹log4cplus提供的執行緒和套接字的使用情況。ndc 首先我們先了解一下log4cplus中嵌入診斷上下文 nested diagnostic context 即ndc。對lo...