Log:日志之 Spdlog 极简用法示范『二』
文章目录
- 关联
- 背景
- 用法示范
- spdlog 输出到终端
- spdlog 输出到文件
- 其它用法
- 成系列地址
简 述: 有上一篇中通过日志调研选型,决定采用 Spdlog 后,此篇开始介绍一些基础入门,先让代码能够跑起来,放上用法示范,再去研究细节用法。
本文初发于 “偕臧的小站”,同步转载于此。
关联
附关联目录直达,随着后续使用,持续更新
- Log:日志选型调研『一』
- Log:日志之 Spdlog 极简用法示范『二』
- 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 极简用法示范『二』相关推荐
- 极简工具,Tekla二次开发--构件图标注工具
第三篇:Tekla二次开发--极简工具,构件图标注工具 关于极简工具 功能介绍 以下是功能视频节选 完整的视频演示地址 C# Tekla二次开发开发教学视频 关于极简工具 Tekla和AutoCAD二 ...
- python中if控制语句_Python 极简教程(十二)逻辑控制语句 if else
计算机软件之所以能够对不同的情况进行不同的处理,就是我们在编码的时候,通过逻辑控制语句,告诉软件在不同的情况下应该做什么处理. 比如我们在登录的时候,那么当你输入正确的账号密码和错误的账号密码,完全是 ...
- 简七32堂极简理财课——模块二:理财规划,让你不再走弯路
文章目录 六.理财第一步 1.理财规划 2.规划理财"五步走" 3.制定规划 根据生命周期制定目标 根据SMART原则设定目标 七.认真点清财富 1.培养财富亲密度,增强对钱的掌控 ...
- c语言log_Morn:一个极简的C语言日志
Morn:一个C语言的基础工具和基础算法库github.com Morn的日志是一个极简的,几乎没有学习成本的日志.它可以实现: 多种输出,包括动态文件.控制台.和用户自定义输出. 日志分级,选择性 ...
- android 日志框架封装,FLog: 一个基于函数组合的Android日志框架,拥有极简的结构和极高的灵活性、扩展性...
FLog 一个基于函数组合的Android日志框架,拥有极简的结构和极高的灵活性.扩展性 下载 在根目录下的build.gradle中添加jitpack.io的maven地址 allprojects ...
- python中modify的用法_30段极简Python代码:这些小技巧你都Get了么
学 Python 怎样才最快,当然是实战各种小项目,只有自己去想与写,才记得住规则.本文是 30 个极简任务,初学者可以尝试着自己实现:本文同样也是 30 段代码,Python 开发者也可以看看是不是 ...
- Docker极简入门
原 Docker极简入门 2018年05月22日 20:25:12 阅读数:44 一.Docker概述 Docker通过一个包括应用程序运行时所需的一切的可执行镜像启动容器,包括配置有代码.运行时.库 ...
- 【“计算机科学与技术”专业小白成长系列】Linux Shell 编程 极简教程
Linux Shell 编程 极简教程 内容摘要 本文是 Linux Shell 编程简单入门.主要内容: Linux 简介 Shell 编程入门 Kotlin 脚本与 Shell 脚本 Linux ...
- 《Kotin 极简教程》第9章 轻量级线程:协程(2)
<Kotlin极简教程>正式上架: 点击这里 > 去京东商城购买阅读 点击这里 > 去天猫商城购买阅读 非常感谢您亲爱的读者,大家请多支持!!!有任何问题,欢迎随时与我交流~ ...
最新文章
- 深入解析Dropout——基本思想:以概率P舍弃部分神经元,其它神经元以概率q=1-p被保留,舍去的神经元的输出都被设置为零...
- java十分钟速懂知识点——引用
- 第七章 脚本参数的传递
- TDSQL 全时态数据库系统 -- 典型案例
- C#连接MySQL时出现Unable to connect to any of the specified MySQL hosts.错误
- 你为什么不爱发朋友圈了?
- 策略模式(headfirst设计模式学习笔记)
- Controller层返回字符串
- 机器人环境感知算法发展概述
- 一文搞懂函数计算及其工作原理
- 八种样本抽样方法介绍
- 十大重要IT公司排名 -2009
- 阿里云国际香港服务器,入手到底行不行?
- android 讯飞语音 提示组件未安装,迅雷看看提示“未安装组件”原因及其解决方法...
- blastp 短肽比对求助
- Chart-制作饼图
- 交换机与IP数据报、ICMP协议、ARP协议
- 华为手机wifi不显示连接到服务器,华为手机无线网已经连接但不能用怎么办
- OLED通信方式_IIC通信
- DeFi对金融世界的变革|读麦道夫庞氏骗局有感