// Copyright(c) 2015-present, Gabi Melman & spdlog contributors. // Distributed under the MIT License (http://opensource.org/licenses/MIT) #pragma once #include #include #include #include #include namespace spdlog { // callbacks type typedef std::function custom_log_callback; namespace sinks { /* * Trivial callback sink, gets a callback function and calls it on each log */ template class callback_sink final : public base_sink { public: explicit callback_sink(const custom_log_callback &callback) : callback_{callback} {} protected: void sink_it_(const details::log_msg &msg) override { callback_(msg); } void flush_() override{}; private: custom_log_callback callback_; }; using callback_sink_mt = callback_sink; using callback_sink_st = callback_sink; } // namespace sinks // // factory functions // template inline std::shared_ptr callback_logger_mt(const std::string &logger_name, const custom_log_callback &callback) { return Factory::template create(logger_name, callback); } template inline std::shared_ptr callback_logger_st(const std::string &logger_name, const custom_log_callback &callback) { return Factory::template create(logger_name, callback); } } // namespace spdlog