Merge pull request #5764 from ligfx/cleanuplogmanager

LogManager: clean ups and encapsulate config file management
This commit is contained in:
Leo Lam
2017-07-09 16:18:49 +02:00
committed by GitHub
6 changed files with 209 additions and 297 deletions

View File

@ -12,7 +12,6 @@
#include <wx/validate.h>
#include "Common/FileUtil.h"
#include "Common/IniFile.h"
#include "Common/Logging/ConsoleListener.h"
#include "Common/Logging/Log.h"
#include "Common/Logging/LogManager.h"
@ -90,39 +89,18 @@ void LogConfigWindow::CreateGUIControls()
void LogConfigWindow::LoadSettings()
{
IniFile ini;
ini.Load(File::GetUserPath(F_LOGGERCONFIG_IDX));
IniFile::Section* options = ini.GetOrCreateSection("Options");
// Retrieve the verbosity value from the config ini file.
int verbosity;
options->Get("Verbosity", &verbosity, 0);
// Ensure the verbosity level is valid.
if (verbosity < 1)
verbosity = 1;
if (verbosity > MAX_LOGLEVEL)
verbosity = MAX_LOGLEVEL;
// Actually set the logging verbosity.
m_verbosity->SetSelection(verbosity - 1);
m_verbosity->SetSelection(m_LogManager->GetLogLevel());
// Get the logger output settings from the config ini file.
options->Get("WriteToFile", &m_writeFile, false);
m_writeFileCB->SetValue(m_writeFile);
options->Get("WriteToConsole", &m_writeConsole, true);
m_writeConsoleCB->SetValue(m_writeConsole);
options->Get("WriteToWindow", &m_writeWindow, true);
m_writeWindowCB->SetValue(m_writeWindow);
m_writeFileCB->SetValue(m_LogManager->IsListenerEnabled(LogListener::FILE_LISTENER));
m_writeConsoleCB->SetValue(m_LogManager->IsListenerEnabled(LogListener::CONSOLE_LISTENER));
m_writeWindowCB->SetValue(m_LogManager->IsListenerEnabled(LogListener::LOG_WINDOW_LISTENER));
// Run through all of the log types and check each checkbox for each logging type
// depending on its set value within the config ini.
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i)
{
bool log_enabled;
ini.GetOrCreateSection("Logs")->Get(m_LogManager->GetShortName((LogTypes::LOG_TYPE)i),
&log_enabled, false);
bool log_enabled = m_LogManager->IsEnabled(static_cast<LogTypes::LOG_TYPE>(i));
if (log_enabled)
enableAll = false;
@ -133,83 +111,31 @@ void LogConfigWindow::LoadSettings()
void LogConfigWindow::SaveSettings()
{
IniFile ini;
ini.Load(File::GetUserPath(F_LOGGERCONFIG_IDX));
IniFile::Section* options = ini.GetOrCreateSection("Options");
options->Set("Verbosity", m_verbosity->GetSelection() + 1);
options->Set("WriteToFile", m_writeFile);
options->Set("WriteToConsole", m_writeConsole);
options->Set("WriteToWindow", m_writeWindow);
// Save all enabled/disabled states of the log types to the config ini.
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i)
{
ini.GetOrCreateSection("Logs")->Set(m_LogManager->GetShortName((LogTypes::LOG_TYPE)i),
m_checks->IsChecked(i));
}
ini.Save(File::GetUserPath(F_LOGGERCONFIG_IDX));
m_LogManager->SaveSettings();
}
// If the verbosity changes while logging
void LogConfigWindow::OnVerbosityChange(wxCommandEvent& event)
{
// Get the new verbosity
int v = m_verbosity->GetSelection() + 1;
// Set all log types to that verbosity level
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; i++)
{
m_LogManager->SetLogLevel((LogTypes::LOG_TYPE)i, (LogTypes::LOG_LEVELS)v);
}
m_LogManager->SetLogLevel(static_cast<LogTypes::LOG_LEVELS>(v));
event.Skip();
}
void LogConfigWindow::OnWriteFileChecked(wxCommandEvent& event)
{
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i)
{
m_writeFile = event.IsChecked();
if (m_checks->IsChecked(i))
{
if (m_writeFile)
m_LogManager->AddListener((LogTypes::LOG_TYPE)i, LogListener::FILE_LISTENER);
else
m_LogManager->RemoveListener((LogTypes::LOG_TYPE)i, LogListener::FILE_LISTENER);
}
}
m_LogManager->EnableListener(LogListener::FILE_LISTENER, event.IsChecked());
}
void LogConfigWindow::OnWriteConsoleChecked(wxCommandEvent& event)
{
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i)
{
m_writeConsole = event.IsChecked();
if (m_checks->IsChecked(i))
{
if (m_writeConsole)
m_LogManager->AddListener((LogTypes::LOG_TYPE)i, LogListener::CONSOLE_LISTENER);
else
m_LogManager->RemoveListener((LogTypes::LOG_TYPE)i, LogListener::CONSOLE_LISTENER);
}
}
m_LogManager->EnableListener(LogListener::CONSOLE_LISTENER, event.IsChecked());
}
void LogConfigWindow::OnWriteWindowChecked(wxCommandEvent& event)
{
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i)
{
m_writeWindow = event.IsChecked();
if (m_checks->IsChecked(i))
{
if (m_writeWindow)
m_LogManager->AddListener((LogTypes::LOG_TYPE)i, LogListener::LOG_WINDOW_LISTENER);
else
m_LogManager->RemoveListener((LogTypes::LOG_TYPE)i, LogListener::LOG_WINDOW_LISTENER);
}
}
m_LogManager->EnableListener(LogListener::LOG_WINDOW_LISTENER, event.IsChecked());
}
void LogConfigWindow::OnToggleAll(wxCommandEvent& WXUNUSED(event))
@ -223,26 +149,8 @@ void LogConfigWindow::OnToggleAll(wxCommandEvent& WXUNUSED(event))
void LogConfigWindow::ToggleLog(int _logType, bool enable)
{
LogTypes::LOG_TYPE logType = (LogTypes::LOG_TYPE)_logType;
m_checks->Check(_logType, enable);
m_LogManager->SetEnable(logType, enable);
if (enable)
{
if (m_writeWindow)
m_LogManager->AddListener(logType, LogListener::LOG_WINDOW_LISTENER);
if (m_writeFile)
m_LogManager->AddListener(logType, LogListener::FILE_LISTENER);
if (m_writeConsole)
m_LogManager->AddListener(logType, LogListener::CONSOLE_LISTENER);
}
else
{
m_LogManager->RemoveListener(logType, LogListener::LOG_WINDOW_LISTENER);
m_LogManager->RemoveListener(logType, LogListener::FILE_LISTENER);
m_LogManager->RemoveListener(logType, LogListener::CONSOLE_LISTENER);
}
}
void LogConfigWindow::OnLogCheck(wxCommandEvent& event)

View File

@ -22,7 +22,6 @@ public:
private:
LogManager* m_LogManager;
bool m_writeFile, m_writeConsole, m_writeWindow;
bool enableAll;
// Controls

View File

@ -133,11 +133,7 @@ void CLogWindow::RemoveAllListeners()
return;
m_has_listeners = false;
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i)
{
m_LogManager->RemoveListener(static_cast<LogTypes::LOG_TYPE>(i),
LogListener::LOG_WINDOW_LISTENER);
}
m_LogManager->EnableListener(LogListener::LOG_WINDOW_LISTENER, false);
}
void CLogWindow::SaveSettings()