文章目录

  • 关联
  • 背景
  • 用法示范
    • spdlog 输出到终端
    • spdlog 输出到文件
  • 其它用法
  • 成系列地址

简 述: 有上一篇中通过日志调研选型,决定采用 Spdlog 后,此篇开始介绍一些基础入门,先让代码能够跑起来,放上用法示范,再去研究细节用法。

本文初发于 “偕臧的小站”,同步转载于此。

关联

附关联目录直达,随着后续使用,持续更新

  1. Log:日志选型调研『一』
  2. Log:日志之 Spdlog 极简用法示范『二』
  3. Log:日志之 Spdlog 核心构成『三』

背景

先简单看下 spdlog 的官方介绍:

Very fast, header-only/compiled, C++ logging library。

我使用它的理由:

  • GitHub 高达 14K ⭐

  • 稳定至今的维护且更新

  • 跨平台支持(Linux / Windows / MacOS / Android / 等 )

  • 采用现代的 C++ 11 语法,简单易用;只需包含其头文件即可

  • 宽松的 MIT 许可证,就连其依赖的 fmt lib 库亦是采用 MIT 许可证;

  • 完整的 wiki 用法文档

  • 支持多种日志:滚动文本、多文本、带颜色的终端输出

  • 使用简单,且性能高;可在运行、编译时刻修改日志等级

用法示范

演示一下在 CMake 使用 spdlog ,个人的仅包含头文件用法 ,分别默认输出到在终端和文本文件的用法。此方式不需要编译安装 spdlog 到本机。

先新建一个 Qt GUI 的 CMake 项目,使用 MSVC 套件编译运行显示一个窗口,准备工作做好了 见提交 #8914eb

spdlog 输出到终端

ExPicShot 根目下执行下载 spdlog 库

git submodule add https://github.com/gabime/spdlog.git ./3rdparty/spdlog

CMakeLists.txt 中添加一行

include_directories(3rdparty/spdlog/include)

再在 main.cpp 添加测试代码

#include "widget.h"#include <QApplication>
#include "spdlog/spdlog.h"int main(int argc, char *argv[])
{    QApplication a(argc, argv);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");Widget w;w.show();return a.exec();
}

运行,即可看到使用默认的彩色格式,默认输出到控制台中 见提交#654264331。。

spdlog 输出到文件

若是更改为写入 .txt 中,可改写为

#include "widget.h"#include <QApplication>
#include "spdlog/spdlog.h"int main(int argc, char *argv[])
{    QApplication a(argc, argv);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");Widget w;w.show();return a.exec();
}

运行后显示 见提交 #3e203c345cb5


其它用法

在 官网文档 说的很清楚 链接二进制 方式和包含头文件路径方式如下;略麻烦是需要对 spdlog 项目进行编译安装作为前提。 还是看个人实际使用去需求。

# Copyright(c) 2019 spdlog authors Distributed under the MIT License (http://opensource.org/licenses/MIT)cmake_minimum_required(VERSION 3.10)
project(spdlog_examples CXX)if(NOT TARGET spdlog)# Stand-alone buildfind_package(spdlog REQUIRED)
endif()# ---------------------------------------------------------------------------------------
# Example of using pre-compiled library
# ---------------------------------------------------------------------------------------
add_executable(example example.cpp)
target_link_libraries(example PRIVATE spdlog::spdlog)# ---------------------------------------------------------------------------------------
# Example of using header-only library
# ---------------------------------------------------------------------------------------
if(SPDLOG_BUILD_EXAMPLE_HO)add_executable(example_header_only example.cpp)target_link_libraries(example_header_only PRIVATE spdlog::spdlog_header_only)
endif()

成系列地址

QtExamples

欢迎 star ⭐ 和 fork

Log:日志之 Spdlog 极简用法示范『二』相关推荐

  1. 极简工具,Tekla二次开发--构件图标注工具

    第三篇:Tekla二次开发--极简工具,构件图标注工具 关于极简工具 功能介绍 以下是功能视频节选 完整的视频演示地址 C# Tekla二次开发开发教学视频 关于极简工具 Tekla和AutoCAD二 ...

  2. python中if控制语句_Python 极简教程(十二)逻辑控制语句 if else

    计算机软件之所以能够对不同的情况进行不同的处理,就是我们在编码的时候,通过逻辑控制语句,告诉软件在不同的情况下应该做什么处理. 比如我们在登录的时候,那么当你输入正确的账号密码和错误的账号密码,完全是 ...

  3. 简七32堂极简理财课——模块二:理财规划,让你不再走弯路

    文章目录 六.理财第一步 1.理财规划 2.规划理财"五步走" 3.制定规划 根据生命周期制定目标 根据SMART原则设定目标 七.认真点清财富 1.培养财富亲密度,增强对钱的掌控 ...

  4. c语言log_Morn:一个极简的C语言日志

    Morn:一个C语言的基础工具和基础算法库​github.com Morn的日志是一个极简的,几乎没有学习成本的日志.它可以实现: 多种输出,包括动态文件.控制台.和用户自定义输出. 日志分级,选择性 ...

  5. android 日志框架封装,FLog: 一个基于函数组合的Android日志框架,拥有极简的结构和极高的灵活性、扩展性...

    FLog 一个基于函数组合的Android日志框架,拥有极简的结构和极高的灵活性.扩展性 下载 在根目录下的build.gradle中添加jitpack.io的maven地址 allprojects ...

  6. python中modify的用法_30段极简Python代码:这些小技巧你都Get了么

    学 Python 怎样才最快,当然是实战各种小项目,只有自己去想与写,才记得住规则.本文是 30 个极简任务,初学者可以尝试着自己实现:本文同样也是 30 段代码,Python 开发者也可以看看是不是 ...

  7. Docker极简入门

    原 Docker极简入门 2018年05月22日 20:25:12 阅读数:44 一.Docker概述 Docker通过一个包括应用程序运行时所需的一切的可执行镜像启动容器,包括配置有代码.运行时.库 ...

  8. 【“计算机科学与技术”专业小白成长系列】Linux Shell 编程 极简教程

    Linux Shell 编程 极简教程 内容摘要 本文是 Linux Shell 编程简单入门.主要内容: Linux 简介 Shell 编程入门 Kotlin 脚本与 Shell 脚本 Linux ...

  9. 《Kotin 极简教程》第9章 轻量级线程:协程(2)

    <Kotlin极简教程>正式上架: 点击这里 > 去京东商城购买阅读 点击这里 > 去天猫商城购买阅读 非常感谢您亲爱的读者,大家请多支持!!!有任何问题,欢迎随时与我交流~ ...

最新文章

  1. 深入解析Dropout——基本思想:以概率P舍弃部分神经元,其它神经元以概率q=1-p被保留,舍去的神经元的输出都被设置为零...
  2. java十分钟速懂知识点——引用
  3. 第七章 脚本参数的传递
  4. TDSQL 全时态数据库系统 -- 典型案例
  5. C#连接MySQL时出现Unable to connect to any of the specified MySQL hosts.错误
  6. 你为什么不爱发朋友圈了?
  7. 策略模式(headfirst设计模式学习笔记)
  8. Controller层返回字符串
  9. 机器人环境感知算法发展概述
  10. 一文搞懂函数计算及其工作原理
  11. 八种样本抽样方法介绍
  12. 十大重要IT公司排名 -2009
  13. 阿里云国际香港服务器,入手到底行不行?
  14. android 讯飞语音 提示组件未安装,迅雷看看提示“未安装组件”原因及其解决方法...
  15. blastp 短肽比对求助
  16. Chart-制作饼图
  17. 交换机与IP数据报、ICMP协议、ARP协议
  18. 华为手机wifi不显示连接到服务器,华为手机无线网已经连接但不能用怎么办
  19. OLED通信方式_IIC通信
  20. DeFi对金融世界的变革|读麦道夫庞氏骗局有感

热门文章

  1. Python求最大公约数的五种常见方法
  2. androidQ系统新特性
  3. 可禁用计算机服务,Windows 10系统下哪些服务可以关闭?
  4. 计算机主机突然断电有什么影响,台式机突然断电有什么危害
  5. 做测试8年,33岁前只想追求大厂高薪,今年只求稳定收入
  6. j3455安装linux 4k驱动,J3455安装centos步骤
  7. 职业资格证书查询与验证
  8. node配置淘宝镜像
  9. Linux 设置多指触控手势,以 Manjaro 为例
  10. 装机部落GhostXP_SP3国庆装机版2013