ev-spdlog-function-callback-sink-002¶
| 字段 | 值 |
|---|---|
| 项目 | gabime/spdlog |
| 固定 commit | 79524ddd08a4 |
| 路径 | include/spdlog/sinks/callback_sink.h |
| 行段 | L15-L29 |
| 特性 | std::function |
| 许可证 | MIT |
| 代码来源 | 项目源码 |
| 级别 | manual |
| 审核 | zyuhao7 @ 2026-10-30 |
| 测试代码 | 否 |
| 发现方式 | manual |
用法¶
用 std::function 保存并调用每条日志的回调
为什么典型¶
日志库不知道用户回调的类型,std::function 让 sink 以统一类型存储任意可调用对象并在每条日志上调用。
摘录¶
// callbacks type
typedef std::function<void(const details::log_msg &msg)> custom_log_callback;
namespace sinks {
/*
* Trivial callback sink, gets a callback function and calls it on each log
*/
template <typename Mutex>
class callback_sink final : public base_sink<Mutex> {
public:
explicit callback_sink(const custom_log_callback &callback)
: callback_{callback} {}
protected:
void sink_it_(const details::log_msg &msg) override { callback_(msg); }
备注¶
生产路径;typedef 固化签名,成员按值保存,调用点只需一条语句。