将spdlog添加到项目中
- 子模块的形式
git submodule add https://github.com/gabime/spdlog.git ./third_party/spdlog
在 CMakeLists.txt 中添加一行即可无需编译直接使用spdlog
include_directories(third_party/spdlog/include)
- 直接拷贝include目录到项目中
运行官方给出的示例代码
#include "spdlog/spdlog.h"
int main()
{
spdlog::info("Welcome to spdlog!");
spdlog::error("Some error message with arg: {}", 1);
spdlog::warn("Easy padding in numbers like {:08d}", 12);
spdlog::critical("Support for int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}", 42);
spdlog::info("Support for floats {:03.2f}", 1.23456);
spdlog::info("Positional args are {1} {0}..", "too", "supported");
spdlog::info("{:<30}", "left aligned");
spdlog::set_level(spdlog::level::debug); // Set global log level to debug
spdlog::debug("This message should be displayed..");
// change log pattern
spdlog::set_pattern("[%H:%M:%S %z] [%n] [%^---%L---%$] [thread %t] %v");
// Compile time log levels
// Note that this does not change the current log level, it will only
// remove (depending on SPDLOG_ACTIVE_LEVEL) the call on the release code.
SPDLOG_TRACE("Some trace message with param {}", 42);
SPDLOG_DEBUG("Some debug message");
}
终端输出如下的结果
将日志输出到文件
在程序初始化时加入如下代码
auto console_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
auto file_sink = std::make_shared<spdlog::sinks::rotating_file_sink_mt>("./logs/demo.log", 5 * 1024 * 1024, 10);
spdlog::sinks_init_list sinks = {console_sink, file_sink};
auto logger = std::make_shared<spdlog::logger>("demo", sinks.begin(), sinks.end());
spdlog::set_default_logger(logger);
spdlog::set_level(spdlog::level::info);
在程序结束时加入如下代码
spdlog::shutdown();
在你需要打印日志的地方使用提前定义好的宏即可
SPDLOG_INFO("Some info message"); //info信息
SPDLOG_DEBUG("Some debug message"); //debug信息