#pragma once
#include "log.h"
#include <vector>
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<Channel>;
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<MultiLogger>;
}}