// // Copyright(c) 2015 Gabi Melman. // Distributed under the MIT License (http://opensource.org/licenses/MIT) // #pragma once #include "../details/null_mutex.h" #include "base_sink.h" #include #include #include namespace spdlog { namespace sinks { template class stdout_sink SPDLOG_FINAL : public base_sink { using MyType = stdout_sink; public: explicit stdout_sink() = default; static std::shared_ptr instance() { static std::shared_ptr instance = std::make_shared(); return instance; } protected: void _sink_it(const details::log_msg &msg) override { fwrite(msg.formatted.data(), sizeof(char), msg.formatted.size(), stdout); _flush(); } void _flush() override { fflush(stdout); } }; using stdout_sink_mt = stdout_sink; using stdout_sink_st = stdout_sink; template class stderr_sink SPDLOG_FINAL : public base_sink { using MyType = stderr_sink; public: explicit stderr_sink() = default; static std::shared_ptr instance() { static std::shared_ptr instance = std::make_shared(); return instance; } protected: void _sink_it(const details::log_msg &msg) override { fwrite(msg.formatted.data(), sizeof(char), msg.formatted.size(), stderr); _flush(); } void _flush() override { fflush(stderr); } }; using stderr_sink_mt = stderr_sink; using stderr_sink_st = stderr_sink; } // namespace sinks } // namespace spdlog