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
committerShauren <shauren.trinity@gmail.com>2024-07-16 16:31:40 +0200
commit81bec6954fa6640e2942d836a856e6bc9d421bce (patch)
treed094109ee7dd6ea1e1ea4b8aebf0d5a5afc124e6 /src/common/Logging/Appender.cpp
parent14f7c0984f102c737f4d4849161243456c6bd71f (diff)
Core/Logging: Minor internal refactor
* Avoid formatting to output with fprintf * Use vector instead of unordered_map to store appenders in Logger
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);
}