From 6031ae2eb918ee21b3bc3da78bbb20bdc80ecd71 Mon Sep 17 00:00:00 2001
From: Kitzunu <24550914+Kitzunu@users.noreply.github.com>
Date: Thu, 4 Jul 2024 19:25:28 +0200
Subject: [PATCH] =?UTF-8?q?chore(Core/Conf):=20Show=20better=20logging=20w?=
=?UTF-8?q?hen=20fatal=20config=20options=20are=20m=E2=80=A6=20(#19236)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
chore(Core/Conf): Show better logging when fatal config options are missing
* Show better log when the server halts due to missing fatal config option
* Change error to warning for missing config options. As they are not errors
* Update output when autoupdater is disabled for all databases
---
src/common/Configuration/Config.cpp | 36 +++++++++++++++++--
.../database/Database/DatabaseLoader.cpp | 2 +-
2 files changed, 35 insertions(+), 3 deletions(-)
diff --git a/src/common/Configuration/Config.cpp b/src/common/Configuration/Config.cpp
index 742777b18..d8665593c 100644
--- a/src/common/Configuration/Config.cpp
+++ b/src/common/Configuration/Config.cpp
@@ -35,6 +35,14 @@ namespace
std::unordered_map _envVarCache;
std::mutex _configLock;
+ std::vector _fatalConfigOptions =
+ {
+ { "RealmID" },
+ { "LoginDatabaseInfo" },
+ { "WorldDatabaseInfo" },
+ { "CharacterDatabaseInfo" },
+ };
+
// Check system configs like *server.conf*
bool IsAppConfig(std::string_view fileName)
{
@@ -388,6 +396,7 @@ T ConfigMgr::GetValueDefault(std::string const& name, T const& def, bool showLog
std::string strValue;
auto const& itr = _configOptions.find(name);
+ bool fatalConfig = false;
bool notFound = itr == _configOptions.end();
auto envVarName = GetEnvVarName(name);
Optional envVar = GetEnvFromCache(name, envVarName);
@@ -406,7 +415,18 @@ T ConfigMgr::GetValueDefault(std::string const& name, T const& def, bool showLog
{
if (showLogs)
{
- LOG_ERROR("server.loading", "> Config: Missing property {} in config file {}, add \"{} = {}\" to this file or define '{}' as an environment variable.",
+ for (std::string s : _fatalConfigOptions)
+ if (s == name)
+ {
+ fatalConfig = true;
+ break;
+ }
+
+ if (fatalConfig)
+ LOG_FATAL("server.loading", "> Config:\n\nFATAL ERROR: Missing property {} in config file {}, add \"{} = {}\" to this file or define '{}' as an environment variable\n\nYour server cannot start without this option!",
+ name, _filename, name, Acore::ToString(def), envVarName);
+ else
+ LOG_WARN("server.loading", "> Config: Missing property {} in config file {}, add \"{} = {}\" to this file or define '{}' as an environment variable.",
name, _filename, name, Acore::ToString(def), envVarName);
}
return def;
@@ -435,6 +455,7 @@ template<>
std::string ConfigMgr::GetValueDefault(std::string const& name, std::string const& def, bool showLogs /*= true*/) const
{
auto const& itr = _configOptions.find(name);
+ bool fatalConfig = false;
bool notFound = itr == _configOptions.end();
auto envVarName = GetEnvVarName(name);
Optional envVar = GetEnvFromCache(name, envVarName);
@@ -453,7 +474,18 @@ std::string ConfigMgr::GetValueDefault(std::string const& name, std
{
if (showLogs)
{
- LOG_ERROR("server.loading", "> Config: Missing property {} in config file {}, add \"{} = {}\" to this file or define '{}' as an environment variable.",
+ for (std::string s : _fatalConfigOptions)
+ if (s == name)
+ {
+ fatalConfig = true;
+ break;
+ }
+
+ if (fatalConfig)
+ LOG_FATAL("server.loading", "> Config:\n\nFATAL ERROR: Missing property {} in config file {}, add \"{} = {}\" to this file or define '{}' as an environment variable.\n\nYour server cannot start without this option!",
+ name, _filename, name, def, envVarName);
+ else
+ LOG_WARN("server.loading", "> Config: Missing property {} in config file {}, add \"{} = {}\" to this file or define '{}' as an environment variable.",
name, _filename, name, def, envVarName);
}
diff --git a/src/server/database/Database/DatabaseLoader.cpp b/src/server/database/Database/DatabaseLoader.cpp
index cfd0d6f0f..5ad77d35d 100644
--- a/src/server/database/Database/DatabaseLoader.cpp
+++ b/src/server/database/Database/DatabaseLoader.cpp
@@ -154,7 +154,7 @@ DatabaseLoader& DatabaseLoader::AddDatabase(DatabaseWorkerPool& pool, std::st
bool DatabaseLoader::Load()
{
if (!_updateFlags)
- LOG_INFO("sql.updates", "Automatic database updates are disabled for all databases!");
+ LOG_WARN("sql.updates", "> AUTOUPDATER: Automatic database updates are disabled for all databases in the config! This is not recommended!");
if (!OpenDatabases())
return false;