diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-07-16 16:31:40 +0200 |
---|---|---|
committer | Ovahlord <dreadkiller@gmx.de> | 2024-07-18 22:34:07 +0200 |
commit | fc27c71dee3e0a4a70a52d0a094325a977d298f2 (patch) | |
tree | 15bf67e63dcaef4511190fc9732f73d8dab4342d /src/common/Logging/Appender.cpp | |
parent | c12f669fc5050017d98ec57c8a45e575154a5edb (diff) |
Core/Logging: Minor internal refactor
* Avoid formatting to output with fprintf
* Use vector instead of unordered_map to store appenders in Logger
(cherry picked from commit 81bec6954fa6640e2942d836a856e6bc9d421bce)
Diffstat (limited to 'src/common/Logging/Appender.cpp')
-rw-r--r-- | src/common/Logging/Appender.cpp | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/src/common/Logging/Appender.cpp b/src/common/Logging/Appender.cpp index 12e441b2ed8..dabd6fcd6f5 100644 --- a/src/common/Logging/Appender.cpp +++ b/src/common/Logging/Appender.cpp @@ -18,12 +18,11 @@ #include "Appender.h" #include "LogMessage.h" #include "StringFormat.h" -#include <sstream> -Appender::Appender(uint8 _id, std::string const& _name, LogLevel _level /* = LOG_LEVEL_DISABLED */, AppenderFlags _flags /* = APPENDER_FLAGS_NONE */): -id(_id), name(_name), level(_level), flags(_flags) { } +Appender::Appender(uint8 _id, std::string _name, LogLevel _level /* = LOG_LEVEL_DISABLED */, AppenderFlags _flags /* = APPENDER_FLAGS_NONE */): +id(_id), name(std::move(_name)), level(_level), flags(_flags) { } -Appender::~Appender() { } +Appender::~Appender() = default; uint8 Appender::getId() const { @@ -55,18 +54,28 @@ void Appender::write(LogMessage* message) if (!level || level > message->level) return; - std::ostringstream ss; + if (flags & (APPENDER_FLAGS_PREFIX_TIMESTAMP | APPENDER_FLAGS_PREFIX_LOGLEVEL | APPENDER_FLAGS_PREFIX_LOGFILTERTYPE)) + { + message->prefix.reserve(100); + message->prefix.clear(); - if (flags & APPENDER_FLAGS_PREFIX_TIMESTAMP) - ss << message->getTimeStr() << ' '; + if (flags & APPENDER_FLAGS_PREFIX_TIMESTAMP) + { + message->prefix.append(message->getTimeStr()); + message->prefix.append(1, ' '); + } - if (flags & APPENDER_FLAGS_PREFIX_LOGLEVEL) - ss << Trinity::StringFormat("{:<5} ", Appender::getLogLevelString(message->level)); + if (flags & APPENDER_FLAGS_PREFIX_LOGLEVEL) + Trinity::StringFormatTo(std::back_inserter(message->prefix), "{:<5} ", getLogLevelString(message->level)); - if (flags & APPENDER_FLAGS_PREFIX_LOGFILTERTYPE) - ss << '[' << message->type << "] "; + if (flags & APPENDER_FLAGS_PREFIX_LOGFILTERTYPE) + { + message->prefix.append(1, '['); + message->prefix.append(message->type); + message->prefix.append("] ", 2); + } + } - message->prefix = ss.str(); _write(message); } |