// // 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 namespace spdlog { namespace sinks { template class ostream_sink : public base_sink { public: explicit ostream_sink(std::ostream& os, bool force_flush=false) :_ostream(os), _force_flush(force_flush) {} ostream_sink(const ostream_sink&) = delete; ostream_sink& operator=(const ostream_sink&) = delete; protected: void _sink_it(const details::log_msg& msg) override { _ostream.write(msg.formatted.data(), msg.formatted.size()); if (_force_flush) _ostream.flush(); } void _flush() override { _ostream.flush(); } std::ostream& _ostream; bool _force_flush; }; using ostream_sink_mt = ostream_sink; using ostream_sink_st = ostream_sink; } }