summaryrefslogtreecommitdiff
path: root/Source/Core/Common/Logging/LogManager.cpp
diff options
context:
space:
mode:
authorAnthony <Helios747@users.noreply.github.com>2017-07-27 11:58:57 -0700
committerGitHub <noreply@github.com>2017-07-27 11:58:57 -0700
commit6fe33f844f1ad9ca02965f9fb75e752430e2744a (patch)
tree56eadb83bc111a39292a4541dcad233b7e021684 /Source/Core/Common/Logging/LogManager.cpp
parent7a51b0bcec891b95b3ea98b03e239ec7937ceb13 (diff)
parent28d6c61e34aeb478d73d440d1aa3faa48b765fa8 (diff)
Merge pull request #5770 from ligfx/lognewconfig
LogManager: use layered config
Diffstat (limited to 'Source/Core/Common/Logging/LogManager.cpp')
-rw-r--r--Source/Core/Common/Logging/LogManager.cpp55
1 files changed, 25 insertions, 30 deletions
diff --git a/Source/Core/Common/Logging/LogManager.cpp b/Source/Core/Common/Logging/LogManager.cpp
index 679e68f59b..45d10de6a2 100644
--- a/Source/Core/Common/Logging/LogManager.cpp
+++ b/Source/Core/Common/Logging/LogManager.cpp
@@ -9,8 +9,8 @@
#include <string>
#include "Common/CommonPaths.h"
+#include "Common/Config/Config.h"
#include "Common/FileUtil.h"
-#include "Common/IniFile.h"
#include "Common/Logging/ConsoleListener.h"
#include "Common/Logging/Log.h"
#include "Common/Logging/LogManager.h"
@@ -19,6 +19,14 @@
constexpr size_t MAX_MSGLEN = 1024;
+const Config::ConfigInfo<bool> LOGGER_WRITE_TO_FILE{
+ {Config::System::Logger, "Options", "WriteToFile"}, false};
+const Config::ConfigInfo<bool> LOGGER_WRITE_TO_CONSOLE{
+ {Config::System::Logger, "Options", "WriteToConsole"}, true};
+const Config::ConfigInfo<bool> LOGGER_WRITE_TO_WINDOW{
+ {Config::System::Logger, "Options", "WriteToWindow"}, true};
+const Config::ConfigInfo<int> LOGGER_VERBOSITY{{Config::System::Logger, "Options", "Verbosity"}, 0};
+
class FileLogListener : public LogListener
{
public:
@@ -40,7 +48,6 @@ public:
bool IsValid() const { return m_logfile.good(); }
bool IsEnabled() const { return m_enable; }
void SetEnable(bool enable) { m_enable = enable; }
- // const char* GetName() const { return "file"; }
private:
std::mutex m_log_lock;
std::ofstream m_logfile;
@@ -121,20 +128,9 @@ LogManager::LogManager()
new FileLogListener(File::GetUserPath(F_MAINLOG_IDX)));
RegisterListener(LogListener::CONSOLE_LISTENER, new ConsoleListener());
- IniFile ini;
- ini.Load(File::GetUserPath(F_LOGGERCONFIG_IDX));
- IniFile::Section* logs = ini.GetOrCreateSection("Logs");
- IniFile::Section* options = ini.GetOrCreateSection("Options");
- bool write_file;
- bool write_console;
- bool write_window;
- options->Get("WriteToFile", &write_file, false);
- options->Get("WriteToConsole", &write_console, true);
- options->Get("WriteToWindow", &write_window, true);
-
// Set up log listeners
- int verbosity;
- options->Get("Verbosity", &verbosity, 0);
+ int verbosity = Config::Get(LOGGER_VERBOSITY);
+ ;
// Ensure the verbosity level is valid
if (verbosity < 1)
@@ -143,12 +139,13 @@ LogManager::LogManager()
verbosity = MAX_LOGLEVEL;
SetLogLevel(static_cast<LogTypes::LOG_LEVELS>(verbosity));
- EnableListener(LogListener::FILE_LISTENER, write_file);
- EnableListener(LogListener::CONSOLE_LISTENER, write_console);
- EnableListener(LogListener::LOG_WINDOW_LISTENER, write_window);
+ EnableListener(LogListener::FILE_LISTENER, Config::Get(LOGGER_WRITE_TO_FILE));
+ EnableListener(LogListener::CONSOLE_LISTENER, Config::Get(LOGGER_WRITE_TO_CONSOLE));
+ EnableListener(LogListener::LOG_WINDOW_LISTENER, Config::Get(LOGGER_WRITE_TO_WINDOW));
for (LogContainer& container : m_log)
- logs->Get(container.m_short_name, &container.m_enable, false);
+ container.m_enable = Config::Get(
+ Config::ConfigInfo<bool>{{Config::System::Logger, "Logs", container.m_short_name}, false});
m_path_cutoff_point = DeterminePathCutOffPoint();
}
@@ -162,20 +159,18 @@ LogManager::~LogManager()
void LogManager::SaveSettings()
{
- IniFile ini;
- ini.Load(File::GetUserPath(F_LOGGERCONFIG_IDX));
-
- IniFile::Section* options = ini.GetOrCreateSection("Options");
- options->Set("Verbosity", GetLogLevel());
- options->Set("WriteToFile", m_listener_ids[LogListener::FILE_LISTENER]);
- options->Set("WriteToConsole", m_listener_ids[LogListener::CONSOLE_LISTENER]);
- options->Set("WriteToWindow", m_listener_ids[LogListener::LOG_WINDOW_LISTENER]);
+ Config::SetBaseOrCurrent(LOGGER_WRITE_TO_FILE, IsListenerEnabled(LogListener::FILE_LISTENER));
+ Config::SetBaseOrCurrent(LOGGER_WRITE_TO_CONSOLE,
+ IsListenerEnabled(LogListener::CONSOLE_LISTENER));
+ Config::SetBaseOrCurrent(LOGGER_WRITE_TO_WINDOW,
+ IsListenerEnabled(LogListener::LOG_WINDOW_LISTENER));
+ Config::SetBaseOrCurrent(LOGGER_VERBOSITY, static_cast<int>(GetLogLevel()));
- // Save all enabled/disabled states of the log types to the config ini.
for (const auto& container : m_log)
- ini.GetOrCreateSection("Logs")->Set(container.m_short_name, container.m_enable);
+ Config::SetBaseOrCurrent({{Config::System::Logger, "Logs", container.m_short_name}, false},
+ container.m_enable);
- ini.Save(File::GetUserPath(F_LOGGERCONFIG_IDX));
+ Config::Save();
}
void LogManager::Log(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type, const char* file,