#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) noexcept : name(std::move(name)) {} virtual ~LogOutputter() = default; std::string& getName() const noexcept; 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(const LogMessage &message) = 0; protected: std::string name; std::unique_ptr m_logFormatter; }; } #endif