Keep log messages in a deque instead of a list and remove unnecessary copy

Co-authored-by: Kacper Piwiński <kacper.piwinski@arex.pl>
This commit is contained in:
vfjpl 2021-04-01 00:38:02 +02:00 committed by GitHub
parent 7752add8aa
commit 67b7dbfcfe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 9 deletions

View File

@ -34,6 +34,12 @@
Logger g_logger;
namespace
{
const std::string s_logPrefixes[] = { "", "", "WARNING: ", "ERROR: ", "FATAL ERROR: " };
bool s_ignoreLogs = false;
}
void Logger::log(Fw::LogLevel level, const std::string& message)
{
std::lock_guard<std::recursive_mutex> lock(m_mutex);
@ -43,13 +49,10 @@ void Logger::log(Fw::LogLevel level, const std::string& message)
return;
#endif
static bool ignoreLogs = false;
if(ignoreLogs)
if(s_ignoreLogs)
return;
const static std::string logPrefixes[] = { "", "", "WARNING: ", "ERROR: ", "FATAL ERROR: " };
std::string outmsg = logPrefixes[level] + message;
std::string outmsg = s_logPrefixes[level] + message;
/*
#if !defined(NDEBUG) && !defined(WIN32)
@ -91,7 +94,7 @@ void Logger::log(Fw::LogLevel level, const std::string& message)
#ifdef FW_GRAPHICS
g_window.displayFatalError(message);
#endif
ignoreLogs = true;
s_ignoreLogs = true;
exit(-1);
}
}
@ -122,8 +125,7 @@ void Logger::fireOldMessages()
std::lock_guard<std::recursive_mutex> lock(m_mutex);
if(m_onLog) {
auto backup = m_logMessages;
for(const LogMessage& logMessage : backup) {
for(const LogMessage& logMessage : m_logMessages) {
m_onLog(logMessage.level, logMessage.message, logMessage.when);
}
}

View File

@ -59,7 +59,7 @@ public:
void setOnLog(const OnLogCallback& onLog) { m_onLog = onLog; }
private:
std::list<LogMessage> m_logMessages;
std::deque<LogMessage> m_logMessages;
OnLogCallback m_onLog;
std::ofstream m_outFile;
std::recursive_mutex m_mutex;