diff --git a/lib/utilities/SpdLogger.cpp b/lib/utilities/SpdLogger.cpp index 288306e..fa7430f 100644 --- a/lib/utilities/SpdLogger.cpp +++ b/lib/utilities/SpdLogger.cpp @@ -1,13 +1,13 @@ #include "SpdLogger.hpp" #include -#include #include -#include -#include -#include -#include "ILog.hpp" +#include +#include +#include + +#include "ILog.hpp" using namespace pixelarium::utils::log; @@ -19,53 +19,58 @@ SpdLogger::SpdLogger(const std::string& file_sink, const std::string& name) logger_->info("Logger initiated"); } -void SpdLogger::Info(const std::string& msg) -{ - this->logger_->info(msg); -} -void SpdLogger::Debug(const std::string& msg) -{ - this->logger_->debug(msg); -} -void SpdLogger::Warn(const std::string& msg) -{ - this->logger_->warn(msg); -} +void SpdLogger::Info(const std::string& msg) { this->logger_->info(msg); } +void SpdLogger::Debug(const std::string& msg) { this->logger_->debug(msg); } +void SpdLogger::Warn(const std::string& msg) { this->logger_->warn(msg); } void SpdLogger::Error(const std::string& msg) { this->logger_->error(msg); } void SpdLogger::ChangeLevel(LogLevel lvl) { - std::stringstream st{}; - st << std::format("with argument {}", static_cast(lvl)); + constexpr auto LogLevelToString = [](LogLevel l) -> const char* + { + switch (l) + { + case LogLevel::Trace: + return "Trace"; + case LogLevel::Debug: + return "Debug"; + case LogLevel::Info: + return "Info"; + case LogLevel::Warn: + return "Warn"; + case LogLevel::Error: + return "Error"; + default: + return "Not Found"; + } + }; + switch (lvl) { case LogLevel::Trace: this->logger_->set_level(spdlog::level::trace); spdlog::flush_on(spdlog::level::trace); - st << "Trace"; break; case LogLevel::Info: this->logger_->set_level(spdlog::level::info); spdlog::flush_on(spdlog::level::info); - st << "Info"; break; case LogLevel::Warn: this->logger_->set_level(spdlog::level::warn); spdlog::flush_on(spdlog::level::warn); - st << "Warn"; break; case LogLevel::Error: this->logger_->set_level(spdlog::level::err); spdlog::flush_on(spdlog::level::err); - st << "Error"; break; case LogLevel::Debug: default: this->logger_->set_level(spdlog::level::debug); spdlog::flush_on(spdlog::level::debug); - st << "Debug"; } // you will only get this message for log levels <= info! I.e., not for error or warning. - this->logger_->info(std::format("{}: Changed log level {}", __FUNCTION__, st.str()).c_str()); + this->logger_->info( + std::format("{}: Changed log level to {}({})", __FUNCTION__, LogLevelToString(lvl), static_cast(lvl)) + .c_str()); } diff --git a/src/uiresources.h.in b/src/uiresources.h.in index 36ce5c2..15927f7 100644 --- a/src/uiresources.h.in +++ b/src/uiresources.h.in @@ -8,7 +8,5 @@ #define LOGLEVELSELECT "Log Level" #define SHOWIMGUIDEMOS "ImGui Demos" -namespace -{ -const char* LOGLEVELS[] = {"Trace", "Debug", "Info", "Warning", "Error"}; -} +inline constexpr const char* LOGLEVELS[] = {"Trace", "Debug", "Info", "Warning", "Error"}; +