muduo庫學習-日誌模塊的學習以及C++日誌模塊封裝

前言

開發一款軟件,一個好的日誌庫肯定是必不可少的,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地址,如果覺得不錯請給個星

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章