#pragma once #include "IConfig.hpp" struct LoggerParams : IParams { std::string id; std::vector flagsEnabled; bool showTime = false; bool showSourceTrace = false; bool coutEnabled = false; bool fileEnabled = false; std::string filePath; }; class LoggerConfig : public IConfig { public: using IConfig::IConfig; bool parseConfig(const libconfig::Setting& setting) override { if (!setting.lookupValue("Id", params_->id)) { return false; } try { const libconfig::Setting& flags = setting.lookup("FlagsEnabled"); for (int index = 0; index < flags.getLength(); ++index) { params_->flagsEnabled.push_back(static_cast(flags[index])); } } catch (const libconfig::SettingException&) { params_->flagsEnabled.clear(); return false; } setting.lookupValue("ShowTime", params_->showTime); setting.lookupValue("ShowSourceTrace", params_->showSourceTrace); setting.lookupValue("CoutEnabled", params_->coutEnabled); setting.lookupValue("FileEnabled", params_->fileEnabled); setting.lookupValue("FilePath", params_->filePath); return true; } };