本文主要是介绍spdlog源码解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
基础抽象
其中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));
}
这篇关于spdlog源码解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!