超详细!spdlog源码解析(中)
接上一篇《[超详细!spdlog源码解析(上)](/8326da2a.html)》,我们提到spdlog主要由logger(也包括async_logger)、sink、formatter、registry这四个部分组成。其中logger已经在[上一篇](/8326da2a.html)中介绍了,没看过的朋友点击链接先把那篇看了。 本文将重点介绍sink这部分的代码。sink -...
接上一篇《[超详细!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`的定义如下: |---------...
1. 引言 {#1-引言} ------------- 1.1 日志的重要性 {#1-1-日志的重要性} ------------------------ 日志在软件开发和维护中扮演着至关重要的角色。它不仅帮助开发者追踪程序运行状态,还能在出现问题时提供宝贵的调试信息。通过日志,我们能够了解软件在特定时间点的行为,分析性能瓶颈,甚至预测潜在的系统故障。日志的重要性不言而喻,...
编译 {#编译} ======== 1. 库github仓库路径为:<https://github.com/gabime/spdlog> ,clone源码并解压到本地,如`D:/spdlog` ,目录下应包含`CMakeLists.txt`文件。 2. 在目录下新建文件夹build,在命令行进入build目录 |-------------|--------...