From c568bdcc42efce7de5ca543cc38f9c6f01914d01 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Fri, 4 Jun 2021 23:57:10 +0200 Subject: [PATCH] feat(Modules): load modules configs before Log initialization (#6104) in order to properly load modules appenders and loggers --- src/common/Configuration/Config.cpp | 15 +++++++-------- src/common/Configuration/Config.h | 4 ++++ src/server/worldserver/Main.cpp | 3 +++ src/server/worldserver/Master.cpp | 2 +- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/common/Configuration/Config.cpp b/src/common/Configuration/Config.cpp index 6bfc88e25..d24e08219 100644 --- a/src/common/Configuration/Config.cpp +++ b/src/common/Configuration/Config.cpp @@ -347,7 +347,6 @@ bool ConfigMgr::LoadModulesConfigs() return true; // Start loading module configs - std::vector moduleConfigFiles; std::string const& moduleConfigPath = GetConfigPath() + "modules/"; bool isExistDefaultConfig = true; bool isExistDistConfig = true; @@ -368,25 +367,25 @@ bool ConfigMgr::LoadModulesConfigs() isExistDefaultConfig = false; if (isExistDefaultConfig && isExistDistConfig) - moduleConfigFiles.emplace_back(defaultFileName); + _moduleConfigFiles.emplace_back(defaultFileName); else if (!isExistDefaultConfig && isExistDistConfig) - moduleConfigFiles.emplace_back(distFileName); + _moduleConfigFiles.emplace_back(distFileName); } // If module configs not exist - no load - if (moduleConfigFiles.empty()) - return false; + return !_moduleConfigFiles.empty(); +} +void ConfigMgr::PrintLoadedModulesConfigs() +{ // Print modules configurations LOG_INFO("server", " "); LOG_INFO("server", "Using modules configuration:"); - for (auto const& itr : moduleConfigFiles) + for (auto const& itr : _moduleConfigFiles) LOG_INFO("server", "> %s", itr.c_str()); LOG_INFO("server", " "); - - return true; } /* diff --git a/src/common/Configuration/Config.h b/src/common/Configuration/Config.h index 90312a7b0..be26a35f1 100644 --- a/src/common/Configuration/Config.h +++ b/src/common/Configuration/Config.h @@ -58,6 +58,8 @@ public: bool isDryRun() { return dryRun; } void setDryRun(bool mode) { dryRun = mode; } + void PrintLoadedModulesConfigs(); + private: /// Method used only for loading main configuration files (authserver.conf and worldserver.conf) bool LoadInitial(std::string const& file); @@ -67,6 +69,8 @@ private: T GetValueDefault(std::string const& name, T const& def, bool showLogs = true) const; bool dryRun = false; + + std::vector _moduleConfigFiles; }; class ConfigException : public std::length_error diff --git a/src/server/worldserver/Main.cpp b/src/server/worldserver/Main.cpp index a931d7884..276d963cf 100644 --- a/src/server/worldserver/Main.cpp +++ b/src/server/worldserver/Main.cpp @@ -122,6 +122,9 @@ extern int main(int argc, char** argv) if (!sConfigMgr->LoadAppConfigs()) return 1; + // Loading modules configs + sConfigMgr->LoadModulesConfigs(); + sLog->RegisterAppender(); sLog->Initialize(); diff --git a/src/server/worldserver/Master.cpp b/src/server/worldserver/Master.cpp index 5e7a3f2fe..82551d29d 100644 --- a/src/server/worldserver/Master.cpp +++ b/src/server/worldserver/Master.cpp @@ -142,7 +142,7 @@ int Master::Run() LoadRealmInfo(); // Loading modules configs - sConfigMgr->LoadModulesConfigs(); + sConfigMgr->PrintLoadedModulesConfigs(); ///- Initialize the World sSecretMgr->Initialize();