// // 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 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; virtual ~ostream_sink() = default; 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; }; typedef ostream_sink ostream_sink_mt; typedef ostream_sink ostream_sink_st; } }