0%

spdlog

1. 介绍

https://github.com/gabime/spdlog.git

  • c++11
  • 只有头文件
  • 跨平台,linux,windows,macos,android
  • 丰富的格式化,自定义格式化
  • 异步模式
  • 多/单线程logger
  • 多日志目标:滚动,按天分类,控制台彩色,syslog,windows event log/debugger, 自定义扩展
  • 日志过滤
  • 从参数和环境变量中加载日志等级
  • backtrace支持
  • 支持1条日志入多个sink

2. 基本使用

搬过来的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#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
// define SPDLOG_ACTIVE_LEVEL to desired level
SPDLOG_TRACE("Some trace message with param {}", 42);
SPDLOG_DEBUG("Some debug message");
}

3. 有意思的地方

3.1. cmake

  • 还支持这样用的 cmake_minimum_required(VERSION 3.10...3.21), 3.12开始支持,policy_max version,影响策略设定。
  • 先写好 version.h 文件,用cmake从里边读出来,再放到 project() 中。