Sinks 是实际将日志写入目标的对象。每个 Sink 应该负责一个单一的目标(例如文件、控制台、数据库),并且每个 Sink 都有其自己的私有 formatter 对象实例。
每个 logger 包含一个 std::shared_ptr<sink> 的向量。在每次日志调用时(如果日志级别合适),logger 将在其中的每个 sink 上调用 "sink(log_msg)" 函数。
spdlog 的 sink 在名称后添加 _mt(多线程)或 _st(单线程)后缀,以表示线程安全性。虽然单线程的 sink 不能在多个线程中同时使用,但它们更快,因为不使用锁定。
可用的 Sinks
注意:这仅是部分列表。有关完整的 sink 列表,请访问 sinks 文件夹。
注意:从版本 1.5.0 开始,如果需要,spdlog 将创建包含日志文件的文件夹。在此之前,文件夹必须手动创建。
rotating_file_sink
当达到最大文件大小时,关闭文件,将其重命名,并创建一个新文件。最大文件大小和最大文件数量都可以在构造函数中进行配置。
// create a thread safe sink which will keep its file size to a maximum of 5MB and a maximum of 3 rotated files.
#include "spdlog/sinks/rotating_file_sink.h"
...
auto file_logger = spdlog::rotating_logger_mt("file_logger", "logs/mylogfile", 1048576 * 5,
本文介绍了C++日志库spdlog的Sinks,它们负责将日志写入不同的目标,如文件、控制台等。Sinks分为多线程(_mt)和单线程(_st)两种,包括rotating_file_sink、daily_file_sink、simple_file_sink等,还提到了如何手动创建和自定义Sinks。
订阅专栏 解锁全文
8412

被折叠的 条评论
为什么被折叠?



