From 0915b3ef56dfac3113cce55a59a5765dc94976be Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 28 Apr 2024 14:34:54 +0200 Subject: Adding upstream version 2.13.6. Signed-off-by: Daniel Baumann --- lib/base/streamlogger.hpp | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 lib/base/streamlogger.hpp (limited to 'lib/base/streamlogger.hpp') diff --git a/lib/base/streamlogger.hpp b/lib/base/streamlogger.hpp new file mode 100644 index 0000000..8cbe313 --- /dev/null +++ b/lib/base/streamlogger.hpp @@ -0,0 +1,47 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +#ifndef STREAMLOGGER_H +#define STREAMLOGGER_H + +#include "base/i2-base.hpp" +#include "base/streamlogger-ti.hpp" +#include "base/timer.hpp" +#include + +namespace icinga +{ + +/** + * A logger that logs to an iostream. + * + * @ingroup base + */ +class StreamLogger : public ObjectImpl +{ +public: + DECLARE_OBJECT(StreamLogger); + + void Stop(bool runtimeRemoved) override; + ~StreamLogger() override; + + void BindStream(std::ostream *stream, bool ownsStream); + + static void ProcessLogEntry(std::ostream& stream, const LogEntry& entry); + +protected: + void ProcessLogEntry(const LogEntry& entry) final; + void Flush() final; + +private: + static std::mutex m_Mutex; + std::ostream *m_Stream{nullptr}; + bool m_OwnsStream{false}; + + Timer::Ptr m_FlushLogTimer; + + void FlushLogTimerHandler(); +}; + +} + +#endif /* STREAMLOGGER_H */ -- cgit v1.2.3