跳转至

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 固化签名,成员按值保存,调用点只需一条语句。

查看固定 commit 源码 · 返回证据索引