Fast C++ logging library.
一個輕量且快速的 log library
https://github.com/gabime/spdlog
用法
- header file
1
新建 Logger
- 新建一個 console logger
1 |
|
- Rotating Logger
- 當 log 超過一定大小,會清空當前 log
spdlog::rotating_logger_mt
1 |
|
- Asynchronous loggers
1 |
|
手動建立 logger
- 手動建立的 logger 並不會自動註冊到 global 中,要自己手動
spdlog::register_logger()
1 | auto sink = std::make_shared<spdlog::sinks::stdout_sink_mt>(); |
- 建立多個輸出的 logger
- 將多個 sink 綁定到
spdlog::logger
上 - e.g. 同時輸出 stdout 跟檔案
- 將多個 sink 綁定到
1 | // 建立 sinks |
- 不同的 logger 輸出至同個檔案
- 使用同個 sink
1 | auto sharedSink = std::make_shared<spdlog::basic_file_sink_mt>("log_name.log"); |
sink
是實際負責寫入 log 的 class,每種sink
只負責一種 log 方式。每個logger
存有一個或多個sink
(std::vector<std::shared_ptr<sink>>
)
輸出 log
- 輸出 log
1 | logger->trace("trace"); |
- 設定 pattern
- pattern 格式
1
logger->set_pattern("[%T] [%n] %^[%l]%$: %v");
- pattern 格式
- 檔案 log
1 | try |
可以使用
spdlog::get("name")
已經註冊過的 Logger- 用此方法可能會比較慢,因為會 lock 住 mutex
1
2
3
4
5{
// 新建 stdout logger
auto testLogger = spdlog::stdout_color_mt("test");
}
spdlog::get("test")->info("hello");
- 用此方法可能會比較慢,因為會 lock 住 mutex
刪除已註冊的
logger
1 | // 刪除叫 `logger_name` 的 logger |
參考
gabime/spdlog
https://github.com/gabime/spdlog
spdLog的使用
https://blog.csdn.net/yanxiaobugyunsan/article/details/79088533
spdlog源码阅读 (1): sinks
https://www.cnblogs.com/eskylin/p/6483199.html
log库spdlog简介及使用
https://blog.csdn.net/fengbingchun/article/details/78347105
如果你覺得這篇文章很棒,請你不吝點讚 (゚∀゚)