基础抽象
其中sink中的log,flush,set_pattern,set_formatter为纯虚函数
formatter为虚类
base_sink
base_sink模板类继承了sink,模板参数提供了同步机制。其实现了基类中的log,flush,set_pattern和set_formatter抽象方法,log方法中会调用抽象方法sink_it_,flush方法调用抽象方法flush_
template <typename Mutex>
void SPDLOG_INLINE spdlog::sinks::base_sink<Mutex>::log(const details::log_msg &msg) {std::lock_guard<Mutex> lock(mutex_);sink_it_(msg);
}template <typename Mutex>
void SPDLOG_INLINE spdlog::sinks::base_sink<Mutex>::flush() {std::lock_guard<Mutex> lock(mutex_);flush_();
}template <typename Mutex>
void SPDLOG_INLINE spdlog::sinks::base_sink<Mutex>::set_pattern(const std::string &pattern) {std::lock_guard<Mutex> lock(mutex_);set_pattern_(pattern);
}template <typename Mutex>
void SPDLOG_INLINE
spdlog::sinks::base_sink<Mutex>::set_formatter(std::unique_ptr<spdlog::formatter> sink_formatter) {std::lock_guard<Mutex> lock(mutex_);set_formatter_(std::move(sink_formatter));
}