Added auto flush to stdout & stderr sinks
This commit is contained in:
		@@ -39,7 +39,7 @@ template<class Mutex>
 | 
			
		||||
class ostream_sink: public base_sink<Mutex>
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    explicit ostream_sink(std::ostream& os) :_ostream(os) {}
 | 
			
		||||
    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;
 | 
			
		||||
@@ -48,8 +48,11 @@ protected:
 | 
			
		||||
    virtual void _sink_it(const details::log_msg& msg) override
 | 
			
		||||
    {
 | 
			
		||||
        _ostream.write(msg.formatted.data(), msg.formatted.size());
 | 
			
		||||
        if (_force_flush)
 | 
			
		||||
            _ostream.flush();
 | 
			
		||||
    }
 | 
			
		||||
    std::ostream& _ostream;
 | 
			
		||||
    bool _force_flush;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef ostream_sink<std::mutex> ostream_sink_mt;
 | 
			
		||||
 
 | 
			
		||||
@@ -38,7 +38,7 @@ template <class Mutex>
 | 
			
		||||
class stdout_sink : public ostream_sink<Mutex>
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    stdout_sink() : ostream_sink<Mutex>(std::cout) {}
 | 
			
		||||
    stdout_sink() : ostream_sink<Mutex>(std::cout, true) {}
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@@ -50,7 +50,7 @@ template <class Mutex>
 | 
			
		||||
class stderr_sink : public ostream_sink<Mutex>
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    stderr_sink() : ostream_sink<Mutex>(std::cerr) {}
 | 
			
		||||
    stderr_sink() : ostream_sink<Mutex>(std::cerr, true) {}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef stderr_sink<std::mutex> stderr_sink_mt;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user