鄭州做網(wǎng)站報價移動優(yōu)化課主講:夫唯老師
系列目錄
spdlog日志庫–基礎(chǔ)介紹
spdlog日志庫–源碼解析
文章目錄
- 1. 格式輸出
- fmt格式輸出
- 2. format_spec 格式空間
- 正數(shù)和負數(shù)的格式
- #號控制輸出格式
- 3. %s占位符 切換 {}占位符 (fmtlib(fmt::format))
- {}占位符 -> %s等占位符
- %s占位符 -> {}占位符
- 4. 不使用占位符({}、%s等)格式輸出的其他方式
- 參考鏈接
1. 格式輸出
fmt格式輸出
使用fmtlib直接格式化(非spdlog內(nèi)置)
雖然spdlog不直接使用{}作為占位符,但你可以在使用spdlog之前,使用fmtlib(spdlog的底層庫)來格式化你的日志消息。
基礎(chǔ):
#include "fmt/core.h"
#include "spdlog/spdlog.h" int main() { auto logger = spdlog::stdout_color_mt("my_logger"); int value = 42; //std::string formatted_message = fmt::format("The value is: {}", value); //logger->info(formatted_message); logger->info("Hello {}", "world" );return 0;
}[2022-02-04 14:54:25.083] [info] Hello world
多參數(shù)形式:
方式一:第一個大括號內(nèi)對應(yīng)后面第一個參數(shù) 第二個大括號內(nèi)對應(yīng)第二個參數(shù)
spdlog::info("nice to {} {}", "meet" , "you");0 1 0 1
[2022-02-04 15:41:37.131] [info] nice to meet you
方式二:大括號內(nèi)輸入整數(shù),1代表參數(shù)后面以第二個數(shù)值,0代表參數(shù)后面第一個數(shù)值,以此類推。
spdlog::info("nice to {1} {0}", "you" , "meet");1 0 0 1
[2022-02-04 15:48:07.328] [info] nice to meet you
說明: 大括號內(nèi)的數(shù)字是參數(shù)標識符,它按照順序排列。
例如:
spdlog::info("The last letter in the Alaphbet is {25}","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");[2022-02-04 17:13:43.973] [info] The last letter in the Alaphbet is z
如果想在有參數(shù)的字符串內(nèi)輸出大括號,需要采取下面的代碼
spdlog::info(" {{}} {}","left is curly brace");0 0
[2022-02-04 17:42:19.961] [info] {} left is curly brace
或者
spdlog::info(" {1} {0}","{}","right is curly brace");[2022-02-04 17:53:54.641] [info] right is curly brace {}
2. format_spec 格式空間
大括號內(nèi)的內(nèi)容 可以是格式空間format_spec
或者時間格式空間chrono_format_spec
格式空間語法
format_spec = [[fill]align][sign]["#"]["0"][width]["." precision]["L"][type]
對齊 align 其左邊的填充可以選 (注意 format_spec 或 chrono_format_spec 在大括號內(nèi)的“:”之后添加)
align = "<" | ">" | "^"“<” = 左對齊
“>” = 右對齊“^” = 居中
代碼塊內(nèi)(1、 2、 3上方 align后)沒有說明寬度 默認空一格
spdlog::info("{:^} {:<} {:>}", "first","second","third");1 2 3