spdlog 基本结构分析
代码取自 [V1.5.0](https://github.com/gabime/spdlog/commit/cf6f1dd01e660d5865d68bf5fa78f6376b89470a), 代码堪称美学。 [spdlog](https://github.com/gabime/spdlog#features.) 是一个只有头文件的C++日志库,速度非常快,扩展性很强,更重要...
代码取自 [V1.5.0](https://github.com/gabime/spdlog/commit/cf6f1dd01e660d5865d68bf5fa78f6376b89470a), 代码堪称美学。 [spdlog](https://github.com/gabime/spdlog#features.) 是一个只有头文件的C++日志库,速度非常快,扩展性很强,更重要...
学过C++后,写过和看过的C++代码还是比较有限,因此便想着学习一些开源项目。spdlog这个项目代码量不大,而且它所实现的功能理解起来也很容易,不需要太多的其他背景知识(毕竟是个日志库嘛),所以就选择了它。在学习这个项目期间,除了看源码外,也看了不少相关的博客,还有也尝试自己实现一个简单的日志库。最后实现了一大半,放弃了。毕竟跟着敲代码只是帮助更深刻理解源码的手段而不是目的。...
接上一篇《[超详细!spdlog源码解析(上)](/8326da2a.html)》,我们提到spdlog主要由logger(也包括async_logger)、sink、formatter、registry这四个部分组成。其中logger已经在[上一篇](/8326da2a.html)中介绍了,没看过的朋友点击链接先把那篇看了。 本文将重点介绍sink这部分的代码。sink -...
没看过前面内容的,先看了再来,从这里去跳转: * [超详细!spdlog源码解析(上)](/8326da2a.html) * [超详细!spdlog源码解析(中)](/bec34dad.html) registry {#registry} ==================== 我们先回顾一下之前的内容。spdlog主要由logger(也包括async_logger)、...
**spdlog是一个c++实现的日志库,代码中大量使用了c++11的特性,并且只需要头文件就可以使用,十分值得使用和研究。** 下面这段代码是spdlog中的一个工厂函数,用来创建一个新的logger,里面用到了c++11之后才支持的完美转发。 |-------------------------|-------------------------------------...
在本文中,我们将讨论如何使用 Spdlog 日志库。Spdlog 是一个快速、异步、线程安全的 C++ 日志库,它可以方便地记录应用程序的运行状态,并提供了多种输出格式。 安装 {#安装} ======== Spdlog 可以通过源代码或包管理器进行安装。如果您使用的是 Linux ubuntu 系统,您可以使用包管理器安装 Spdlog: |-----------|--...
Spdlog 的结构 {#Spdlog-的结构} ======================== Spdlog 由五个主要组件构成:Loggers、Sinks、Formatters、Async Logger 和 Registry。每个组件都扮演着不同的角色,共同协作记录并输出日志消息。 * Loggers :是 Spdlog 最基本的组件,负责记录日志消息。在 Spdlo...
上一篇文章介绍了`spdlog`的五个主要组件,其中最重要是`Logger`、`Sink`和`Formatter`其中,`Logger`负责日志的记录和管理,`Sink`负责将日志输出到不同的目标(比如控制台、文件、网络等),`Formatter`负责将日志格式化为字符串。我们会在下面详细的介绍下它们。 Logger {#Logger} ================ `...
`Sink`负责将日志输出到不同的目标。`Spdlog`提供了多种`Sink`,包括`stdout_sink`(输出到控制台)、`basic_file_sink`(输出到文件)、`syslog_sink`(输出到`syslog`)等。 `Sink`组件的实现采用继承抽象类的方法,提供了灵活的扩展能力。 最基础的`sink`基类定义如下: |----------------...
Formatter {#Formatter} ====================== `Formatter`负责将日志格式化为字符串。`Spdlog`提供了多种`Formatter`,比如`pattern_formatter`(按指定的格式输出日志)、`json_formatter`(以JSON格式输出日志)等。`Formatter`的定义如下: |---------...