各位看官,本人最近正在致力於研究log的寫法,其中我看了一下我們公司,用的是github上的一個開源項目spdlog,所以我就研究了一下,並且試着模仿了一下我們公司打log的方法,現在就和各位看官一起分享一下。
一、Spdlog的定義以及他的優點
二、Spdlog如何移植
三、SpdLog的基本結構特性
四、我這邊是如何使用
一、Spdlog的定義以及他的優點
Spdlog是一款開源的,基於c++的的日志庫,簡單來說,只要我們采用了這個開源庫,我們就可以隨意的來記錄日志了(這個日志包括再stdout上顯示和再文件中顯示)。它有如下特性:
優點:1、它是一款輕量級別的庫,我全部下載完也不過幾百k(壓縮包)。
2、他的使用條件非常靈活,可以單線程用,也可以多線程用(不過我還沒玩過多線程),
3、使用形式非常靈活,就是你想把log形式定義成什么樣的都可以。
4、輸出形式靈活並且效果很好,比如你可以設置成日志一天一清,也可以把日志設置成多個文件的,另外輸入的日志也可以設置顏色,這也是我最喜歡的部分。
5、日志分層:日志分成INFO,DEBUG,TRACE,ERROR等多種分層,我們可以根據需要設置自己每一條日志的等級。
6、我覺得開發這個的作者很貼心,把所有的使用方法都寫成例子讓你去看。
缺點:1、它必須是基於c++11以上版本的(其實我覺得這都不能算是缺點)
二、spdlog如何移植
我覺得spdlog移植的方法也很容易,只需要按照三個步驟:(我是linux系統的)
1、下載,放入linux系統
2、解壓
3、創建build,進入build目錄,執行cmake .. &make install(這里要說明的是一定要用make install,如果用make -j,如果只是把include放進去,會提示你沒有權限)。好了,這樣我們的spdlog就移植完成了。
三、spdlog的基本結構特性
我們從兩個方面來說明:
橫向方面:根據我們輸入日志的不同我們創建的類型也有所不同(為了節省時間,我就不寫參數了)
1、創建當天日志
spdlog::daily_logger_mt
說明:該日志創建成功以后,寫入的日志只在當天生效,簡單來說,就是在一天的某個時間點(這個函數中有參數可以設置)就會把日志清空。
2、創建多個文件日志
spdlog::rotating_logger_mt
說明:該日志創建成功以后,如果我們寫入的日志大小大於某個值(這個值參數當中會有設置)會創建一個新文件,然后將新的日志寫入到新文件當中。另外還要注意的是創建的文件數目也可以設定。
3、創建單個文件日志
spdlog::basic_logger_mt
說明:該日志創建成功以后,我們只會創建單個文件,所有日志都會一直再這個文件中累加。
4、輸出終端
spdlog::stdout_color_mt
說明:該日志創建成功以后,我們的日志會自動打印到終端上,另外,每一種等級的日志顏色都會有所不同。
當然,example中提供的方法還遠不止這幾種,比如二進制的輸出,異步的輸出等等,不過我這里能用到的就是這些了。
縱向:
1、創建日志
2、設置level的值(默認是info)
3、使用函數打印
四、我這邊如何使用
1、創建日志的值(我這邊默認的是rotating)
2、設置log等級和pattern
3、使用宏封一層
4、直接使用
總結:今天聊了spdlog的特性,安裝,基本數據類型和使用,總體來說我覺得簡單,輕便,使用起來容易上手,真的是一個很不錯的代碼。
