前言
開發一款軟件,一個好的日誌庫肯定是必不可少的,c++作爲一門這麼古老的開發語言,按理說應該有一些好用的日誌庫,但是在網上找到的那些日誌庫感覺用起來都不是很得心應手,因此就自己動手寫了一個日誌庫,源碼放在github上
我自己寫的這個日誌是參考muduo的日誌模塊開發的,下面我們首先介紹muduo日誌庫
muduo日誌庫的架構:
muduo日誌庫的類調用關係
Logger => Impl => LogStream => operator<< FixedBuffer => g_output => g_flush
muduo日誌庫類圖
類的介紹
-
logger 用來接收寫入的日誌,同時對輸出進行管理
-
loggstream 與Impl是組合的關係,logger類的成員有logstream類對象,用來流式格式化日誌內容
-
fixedBuffer用來兼容muduo庫自己的string和std::string
-
Impl類實際輸入的類,與logger是組合的關係
-
logfile類用來管理日誌寫入文件相關的一些處理
我自己封裝的logger介紹
使用方法
#include <stdio.h>
#include "CLogger.h"
#include <time.h>
int main()
{
//printf("hello world!\n");
CLogger::setLogFmtType(CLogger::LogFmtType::JSON);
time_t now = time(nullptr);
int i = 0;
while(i<10000000)
{
LOG_DEBUG << "hello world!";
i++;
}
time_t end = time(nullptr);
int diff = end - now;
std::cout << "diff:" << diff <<std::endl;
return 0;
}
上面的例子是測試寫入一千萬條日誌所用的時間,支持輸出json和格式化的字符串兩種類型的數據,具體的實現請移步github地址,如果覺得不錯請給個星