From 931134688a0dbaacfec3f1503b50e2e7e9fa3596 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Tue, 20 Jan 2015 05:18:44 -0600 Subject: [PATCH] Add a copy of load log settings to UCS because of how split Database classes are laid out --- ucs/database.cpp | 31 +++++++++++++++++++++++++++++++ ucs/database.h | 3 ++- ucs/ucs.cpp | 33 +++++++++++++++------------------ 3 files changed, 48 insertions(+), 19 deletions(-) diff --git a/ucs/database.cpp b/ucs/database.cpp index 7cd5b7d09..a295880f2 100644 --- a/ucs/database.cpp +++ b/ucs/database.cpp @@ -578,3 +578,34 @@ void Database::GetFriendsAndIgnore(int charID, std::vector &friends } +void Database::LoadLogSysSettings(EQEmuLogSys::LogSettings* log_settings){ + std::string query = + "SELECT " + "log_category_id, " + "log_category_description, " + "log_to_console, " + "log_to_file, " + "log_to_gmsay " + "FROM " + "logsys_categories " + "ORDER BY log_category_id"; + auto results = QueryDatabase(query); + + int log_category = 0; + Log.file_logs_enabled = false; + + for (auto row = results.begin(); row != results.end(); ++row) { + log_category = atoi(row[0]); + log_settings[log_category].log_to_console = atoi(row[2]); + log_settings[log_category].log_to_file = atoi(row[3]); + log_settings[log_category].log_to_gmsay = atoi(row[4]); + + /* + This determines whether or not the process needs to actually file log anything. + If we go through this whole loop and nothing is set to any debug level, there is no point to create a file or keep anything open + */ + if (log_settings[log_category].log_to_file > 0){ + Log.file_logs_enabled = true; + } + } +} \ No newline at end of file diff --git a/ucs/database.h b/ucs/database.h index fc9b96d19..a8c382982 100644 --- a/ucs/database.h +++ b/ucs/database.h @@ -57,7 +57,8 @@ public: void ExpireMail(); void AddFriendOrIgnore(int CharID, int Type, std::string Name); void RemoveFriendOrIgnore(int CharID, int Type, std::string Name); - void GetFriendsAndIgnore(int CharID, std::vector &Friends, std::vector &Ignorees); + void GetFriendsAndIgnore(int CharID, std::vector &Friends, std::vector &Ignorees); + void LoadLogSysSettings(EQEmuLogSys::LogSettings* log_settings); protected: diff --git a/ucs/ucs.cpp b/ucs/ucs.cpp index 8ff86f9eb..e67c9e445 100644 --- a/ucs/ucs.cpp +++ b/ucs/ucs.cpp @@ -33,25 +33,21 @@ #include #include -volatile bool RunLoops = true; - -uint32 MailMessagesSent = 0; -uint32 ChatMessagesSent = 0; - -TimeoutManager timeout_manager; - -Clientlist *CL; - ChatChannelList *ChannelList; - +Clientlist *CL; +EQEmuLogSys Log; +TimeoutManager timeout_manager; Database database; - -std::string WorldShortName; +WorldServer *worldserver = nullptr; const ucsconfig *Config; -WorldServer *worldserver = nullptr; -EQEmuLogSys Log; +std::string WorldShortName; + +uint32 ChatMessagesSent = 0; +uint32 MailMessagesSent = 0; + +volatile bool RunLoops = true; void CatchSignal(int sig_num) { @@ -80,10 +76,8 @@ int main() { Log.Out(Logs::General, Logs::UCS_Server, "Starting EQEmu Universal Chat Server."); - if (!ucsconfig::LoadConfig()) { - - Log.Out(Logs::General, Logs::UCS_Server, "Loading server configuration failed."); - + if (!ucsconfig::LoadConfig()) { + Log.Out(Logs::General, Logs::UCS_Server, "Loading server configuration failed."); return 1; } @@ -103,6 +97,9 @@ int main() { return 1; } + /* Register Log System and Settings */ + database.LoadLogSysSettings(Log.log_settings); + char tmp[64]; if (database.GetVariable("RuleSet", tmp, sizeof(tmp)-1)) {