aboutsummaryrefslogtreecommitdiff
path: root/src/common/Logging/Appender.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-07-16 16:31:40 +0200
committerOvahlord <dreadkiller@gmx.de>2024-07-18 22:34:07 +0200
commitfc27c71dee3e0a4a70a52d0a094325a977d298f2 (patch)
tree15bf67e63dcaef4511190fc9732f73d8dab4342d /src/common/Logging/Appender.cpp
parentc12f669fc5050017d98ec57c8a45e575154a5edb (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.cpp33
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);
}