#pragma once #include "log.h" #include namespace panda { namespace log { struct MultiLogger : ILogger { struct Channel { Channel (ILoggerFromAny l, Level minl) : logger(std::move(l.value)), min_level(minl) {} Channel (ILoggerFromAny l, IFormatterFromAny f = {}, Level minl = Level::Debug) : logger(std::move(l.value)), formatter(std::move(f.value)), min_level(minl) {} ILoggerSP logger; IFormatterSP formatter; Level min_level; }; using Channels = std::vector; MultiLogger (const Channels&); ~MultiLogger (); void log_format (std::string&, const Info&, const IFormatter&) override; private: const Channels channels; // could not be changed for thread-safety }; using MultiLoggerSP = iptr; }}