#ifndef FEATHERLOG_LOG_OUTPUTTER_HPP #define FEATHERLOG_LOG_OUTPUTTER_HPP #include #include #include #include namespace flog { class FLOG_API LogOutputter { public: explicit 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: std::string m_name; std::unique_ptr m_logFormatter; }; } #endif