diff options
author | Shauren <shauren.trinity@gmail.com> | 2022-05-09 14:19:02 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-05-09 14:19:02 +0200 |
commit | 5ba124758790ef7d71eab2dae157bfec5fdd5926 (patch) | |
tree | 4671fa8a6f5eda7858dfc7839b033f30871cd667 /src/common/Logging/Log.cpp | |
parent | 86cf5160b95c8b497fc91658fc1d3145e9ad8bcb (diff) |
Core/Logging: Remove string allocations for logs that are not going to be logged
Diffstat (limited to 'src/common/Logging/Log.cpp')
-rw-r--r-- | src/common/Logging/Log.cpp | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/common/Logging/Log.cpp b/src/common/Logging/Log.cpp index 9f44654f38d..d67ae7c8a56 100644 --- a/src/common/Logging/Log.cpp +++ b/src/common/Logging/Log.cpp @@ -143,8 +143,7 @@ void Log::CreateLoggerFromConfigLine(std::string const& loggerName, std::string return; } - std::unique_ptr<Logger>& logger = loggers[name]; - if (logger) + if (loggers.find(name) != loggers.end()) { fprintf(stderr, "Error while configuring Logger %s. Already defined\n", name.c_str()); return; @@ -160,7 +159,8 @@ void Log::CreateLoggerFromConfigLine(std::string const& loggerName, std::string if (level < lowestLogLevel) lowestLogLevel = level; - logger = std::make_unique<Logger>(name, level); + Logger* logger = new Logger(name, level); + loggers[logger->getName()].reset(logger); //fprintf(stdout, "Log::CreateLoggerFromConfig: Created Logger %s, Level %u\n", name.c_str(), level); for (std::string_view appenderName : Trinity::Tokenize(tokens[1], ' ', false)) @@ -206,11 +206,11 @@ void Log::ReadLoggersFromConfig() Logger* rootLogger = new Logger(LOGGER_ROOT, LOG_LEVEL_ERROR); rootLogger->addAppender(appender->getId(), appender); - loggers[LOGGER_ROOT].reset(rootLogger); + loggers[rootLogger->getName()].reset(rootLogger); Logger* serverLogger = new Logger("server", LOG_LEVEL_INFO); serverLogger->addAppender(appender->getId(), appender); - loggers["server"].reset(serverLogger); + loggers[serverLogger->getName()].reset(serverLogger); } } @@ -221,9 +221,9 @@ void Log::RegisterAppender(uint8 index, AppenderCreatorFn appenderCreateFn) appenderFactory[index] = appenderCreateFn; } -void Log::outMessage(std::string const& filter, LogLevel level, std::string&& message) +void Log::outMessage(std::string_view filter, LogLevel level, std::string&& message) { - write(std::make_unique<LogMessage>(level, filter, std::move(message))); + write(std::make_unique<LogMessage>(level, std::string(filter), std::move(message))); } void Log::outCommand(std::string&& message, std::string&& param1) @@ -244,7 +244,7 @@ void Log::write(std::unique_ptr<LogMessage>&& msg) const logger->write(msg.get()); } -Logger const* Log::GetLoggerByType(std::string const& type) const +Logger const* Log::GetLoggerByType(std::string_view type) const { auto it = loggers.find(type); if (it != loggers.end()) @@ -253,7 +253,7 @@ Logger const* Log::GetLoggerByType(std::string const& type) const if (type == LOGGER_ROOT) return nullptr; - std::string parentLogger = LOGGER_ROOT; + std::string_view parentLogger = LOGGER_ROOT; size_t found = type.find_last_of('.'); if (found != std::string::npos) parentLogger = type.substr(0, found); @@ -350,7 +350,7 @@ void Log::Close() appenders.clear(); } -bool Log::ShouldLog(std::string const& type, LogLevel level) const +bool Log::ShouldLog(std::string_view type, LogLevel level) const { // TODO: Use cache to store "Type.sub1.sub2": "Type" equivalence, should // Speed up in cases where requesting "Type.sub1.sub2" but only configured |