From 67b7dbfcfed7de76716632dcc0d1a9890e1d46ae Mon Sep 17 00:00:00 2001 From: vfjpl Date: Thu, 1 Apr 2021 00:38:02 +0200 Subject: [PATCH] Keep log messages in a deque instead of a list and remove unnecessary copy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Kacper PiwiƄski --- src/framework/core/logger.cpp | 18 ++++++++++-------- src/framework/core/logger.h | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/framework/core/logger.cpp b/src/framework/core/logger.cpp index c4bcbc9a..41aabbfd 100644 --- a/src/framework/core/logger.cpp +++ b/src/framework/core/logger.cpp @@ -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 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 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); } } diff --git a/src/framework/core/logger.h b/src/framework/core/logger.h index bebd5e24..c1226947 100644 --- a/src/framework/core/logger.h +++ b/src/framework/core/logger.h @@ -59,7 +59,7 @@ public: void setOnLog(const OnLogCallback& onLog) { m_onLog = onLog; } private: - std::list m_logMessages; + std::deque m_logMessages; OnLogCallback m_onLog; std::ofstream m_outFile; std::recursive_mutex m_mutex;