文章

spdlog 使用

1. 使用时的编译选项

1
2
3
4
5
6
if(CMAKE_BUILD_TYPE STREQUAL "Release")
  add_compile_definitions(-DSPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_WARN)
  add_compile_definitions(-DNDEBUG)
else()
  add_compile_definitions(-DSPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_TRACE)
endif()

2. 日志级别,日志格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <spdlog/spdlog.h>

#ifdef NDEBUG
  spdlog::set_level(spdlog::level::warn);  // disable spdlog for performance test
#else
  spdlog::set_level(spdlog::level::info);
  spdlog::set_pattern("%H:%M:%S.%e %t %s %! %v");
#endif

// back to default format
// spdlog::set_pattern("%+"); 

// alignment: 左对齐, 右对齐
spdlog::info("{:>8} aligned, {:<8} aligned", "right", "left");

3. 使用技巧

3.1 打印 std::vector

1
2
3
4
5
#include "spdlog/spdlog.h"
#include "spdlog/fmt/bundled/ranges.h"

logger->info ("vector: {}", fmt::join(vec, ", "));
SPDLOG_INFO("vector: {}", vec);
本文由作者按照 CC BY 4.0 进行授权