#pragma once #include #include #include #include namespace flog { class FLOG_API LogOutputter { public: LogOutputter(std::string name, std::unique_ptr formatter) noexcept : m_name(std::move(name)), m_logFormatter(std::move(formatter)) { } virtual ~LogOutputter() = default; NODISCARD std::string FLOG_CALL getName() const noexcept { return m_name; } std::unique_ptr FLOG_CALL set_formatter(const std::unique_ptr &formatter); NODISCARD const std::unique_ptr & FLOG_CALL get_formatter() const; virtual void FLOG_CALL write_log(const LogMessage &message) = 0; protected: const std::string m_name; std::unique_ptr m_logFormatter; }; }