#pragma once #include #include #include class Channel { public: Channel() = default; virtual ~Channel() = default; Channel(const Channel &other) = delete; Channel(Channel &&other) = delete; Channel &operator=(const Channel &other) = delete; Channel &operator=(Channel &&other) = delete; virtual void log(const Log::Level &logLevel, const std::string &message, const std::map &context = {}) = 0; protected: [[nodiscard]] static std::string printContext(const std::map &context); private: };