Skip to content

Commit 67b7dbf

Browse files
vfjplKacper Piwiński
andauthored
Keep log messages in a deque instead of a list and remove unnecessary copy
Co-authored-by: Kacper Piwiński <kacper.piwinski@arex.pl>
1 parent 7752add commit 67b7dbf

2 files changed

Lines changed: 11 additions & 9 deletions

File tree

‎src/framework/core/logger.cpp‎

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@
3434

3535
Logger g_logger;
3636

37+
namespace
38+
{
39+
const std::string s_logPrefixes[] = { "", "", "WARNING: ", "ERROR: ", "FATAL ERROR: " };
40+
bool s_ignoreLogs = false;
41+
}
42+
3743
void Logger::log(Fw::LogLevel level, const std::string& message)
3844
{
3945
std::lock_guard<std::recursive_mutex> lock(m_mutex);
@@ -43,13 +49,10 @@ void Logger::log(Fw::LogLevel level, const std::string& message)
4349
return;
4450
#endif
4551

46-
static bool ignoreLogs = false;
47-
if(ignoreLogs)
52+
if(s_ignoreLogs)
4853
return;
4954

50-
const static std::string logPrefixes[] = { "", "", "WARNING: ", "ERROR: ", "FATAL ERROR: " };
51-
52-
std::string outmsg = logPrefixes[level] + message;
55+
std::string outmsg = s_logPrefixes[level] + message;
5356

5457
/*
5558
#if !defined(NDEBUG) && !defined(WIN32)
@@ -91,7 +94,7 @@ void Logger::log(Fw::LogLevel level, const std::string& message)
9194
#ifdef FW_GRAPHICS
9295
g_window.displayFatalError(message);
9396
#endif
94-
ignoreLogs = true;
97+
s_ignoreLogs = true;
9598
exit(-1);
9699
}
97100
}
@@ -122,8 +125,7 @@ void Logger::fireOldMessages()
122125
std::lock_guard<std::recursive_mutex> lock(m_mutex);
123126

124127
if(m_onLog) {
125-
auto backup = m_logMessages;
126-
for(const LogMessage& logMessage : backup) {
128+
for(const LogMessage& logMessage : m_logMessages) {
127129
m_onLog(logMessage.level, logMessage.message, logMessage.when);
128130
}
129131
}

‎src/framework/core/logger.h‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class Logger
5959
void setOnLog(const OnLogCallback& onLog) { m_onLog = onLog; }
6060

6161
private:
62-
std::list<LogMessage> m_logMessages;
62+
std::deque<LogMessage> m_logMessages;
6363
OnLogCallback m_onLog;
6464
std::ofstream m_outFile;
6565
std::recursive_mutex m_mutex;

0 commit comments

Comments
 (0)