spdlog简介
spdlog是一款高效的C++日志库,spdlog支持异步和同步日志记录。
编译安装
克隆项目
git clone https://github.com/gabime/spdlog.git
编译
cd spdlog
mkdir build
cd build
cmake ..
make -j`nproc`
安装
make install
使用实例代码
打印一行日志
代码
#include <spdlog/spdlog.h>
int main() {
// 打印一行日志
spdlog::info("hello world");
return 0;
}
编译
g++ main.cpp -o main -std=c++14 -lpthread -I/usr/local/include/
运行测试
08:08:52 root@asus spdlog_test → ./main
[2024-11-03 08:08:56.346] [info] hello world
一些常用的方法
代码
#include <spdlog/spdlog.h>
#include <spdlog/sinks/stdout_color_sinks.h>
#include <spdlog/sinks/basic_file_sink.h>
#include <spdlog/async.h>
#include <spdlog/async_logger.h>
#include <spdlog/sinks/base_sink.h>
int main() {
// 打印一行日志
spdlog::info("hello world");
// 使用工厂方法进行实现,创建异步的logger
auto logger = spdlog::stdout_color_mt<spdlog::async_factory>("console");
logger->info("hello hello");
// 可以通过logger的名称获取指定的logger,然后打印日志
spdlog::get("console")->info("hello hello hello");
// 手动创建logger
// 该方式的好处是可以携带多个sink
// 创建一个sink
auto sink1 = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
// 创建一个输出到文件的sink
auto sink2 = std::make_shared<spdlog::sinks::basic_file_sink_mt>("test.txt");
// 设置日志格式
sink2->set_pattern("[%^%l%$] %v");
// 创建logger
auto logger1 = std::make_shared<spdlog::logger>(std::string("sonsole1"));
// 一个logger可以携带多个sink
logger1->sinks().push_back(sink1);
logger1->sinks().push_back(sink2);
// 将logger注册到registory中
spdlog::register_logger(logger1);
// 使用logger1
logger1->info("hello console1");
return 0;
}
运行测试
09:17:24 root@asus spdlog_test → ./main
[2024-11-03 09:17:27.818] [info] hello world
[2024-11-03 09:17:27.821] [console] [info] hello hello
[2024-11-03 09:17:27.821] [console] [info] hello hello hello
[2024-11-03 09:17:27.821] [sonsole1] [info] hello console1