// // Copyright(c) 2015 Gabi Melman. // Distributed under the MIT License (http://opensource.org/licenses/MIT) // #pragma once #include "spdlog/details/null_mutex.h" #include "spdlog/sinks/base_sink.h" #include #include #include namespace spdlog { namespace sinks { template class stdout_sink SPDLOG_FINAL : public base_sink { using MyType = stdout_sink; public: stdout_sink() {} 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); } }; typedef stdout_sink stdout_sink_st; typedef stdout_sink stdout_sink_mt; template class stderr_sink SPDLOG_FINAL : public base_sink { using MyType = stderr_sink; public: stderr_sink() {} 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); } }; typedef stderr_sink stderr_sink_mt; typedef stderr_sink stderr_sink_st; } }