Files
pixelarium/lib/utilities/SpdLogger.cpp
T

76 lines
2.4 KiB
C++
Raw Normal View History

2025-03-17 18:50:31 +01:00
#include "SpdLogger.hpp"
#include <spdlog/common.h>
#include <spdlog/sinks/basic_file_sink.h>
2025-08-18 22:39:43 +00:00
#include <spdlog/spdlog.h>
2025-03-17 18:50:31 +01:00
#include <memory>
#include <string>
2025-08-18 22:39:43 +00:00
#include "ILog.hpp"
2025-03-17 18:50:31 +01:00
using namespace pixelarium::utils::log;
SpdLogger::SpdLogger(const std::string& file_sink, const std::string& name)
2025-06-13 22:23:20 +00:00
: logger_(spdlog::basic_logger_mt(name, file_sink)), file_(file_sink), name_(name)
2025-03-17 18:50:31 +01:00
{
2025-06-13 22:23:20 +00:00
spdlog::set_default_logger(this->logger_);
2025-03-17 18:50:31 +01:00
spdlog::flush_on(spdlog::level::info);
2025-06-13 22:23:20 +00:00
logger_->info("Logger initiated");
2025-03-17 18:50:31 +01:00
}
2025-08-18 22:39:43 +00:00
void SpdLogger::Info(const std::string& msg) const { this->logger_->info(msg); }
void SpdLogger::Debug(const std::string& msg) const { this->logger_->debug(msg); }
void SpdLogger::Warn(const std::string& msg) const { this->logger_->warn(msg); }
void SpdLogger::Error(const std::string& msg) const { this->logger_->error(msg); }
2025-06-13 22:23:20 +00:00
2025-08-18 22:39:43 +00:00
void SpdLogger::ChangeLevel(LogLevel lvl) const
2025-03-17 18:50:31 +01:00
{
2025-08-18 22:39:43 +00:00
constexpr auto LogLevelToString = [](LogLevel l) -> const char*
{
switch (l)
{
2025-10-07 12:18:00 +02:00
case LogLevel::kTrace:
2025-08-18 22:39:43 +00:00
return "Trace";
2025-10-07 12:18:00 +02:00
case LogLevel::kDebug:
2025-08-18 22:39:43 +00:00
return "Debug";
2025-10-07 12:18:00 +02:00
case LogLevel::kInfo:
2025-08-18 22:39:43 +00:00
return "Info";
2025-10-07 12:18:00 +02:00
case LogLevel::kWarn:
2025-08-18 22:39:43 +00:00
return "Warn";
2025-10-07 12:18:00 +02:00
case LogLevel::kError:
2025-08-18 22:39:43 +00:00
return "Error";
default:
return "Not Found";
}
};
2025-06-13 22:23:20 +00:00
switch (lvl)
{
2025-10-07 12:18:00 +02:00
case LogLevel::kTrace:
2025-06-13 22:23:20 +00:00
this->logger_->set_level(spdlog::level::trace);
spdlog::flush_on(spdlog::level::trace);
break;
2025-10-07 12:18:00 +02:00
case LogLevel::kInfo:
2025-06-13 22:23:20 +00:00
this->logger_->set_level(spdlog::level::info);
spdlog::flush_on(spdlog::level::info);
break;
2025-10-07 12:18:00 +02:00
case LogLevel::kWarn:
2025-06-13 22:23:20 +00:00
this->logger_->set_level(spdlog::level::warn);
spdlog::flush_on(spdlog::level::warn);
break;
2025-10-07 12:18:00 +02:00
case LogLevel::kError:
2025-06-13 22:23:20 +00:00
this->logger_->set_level(spdlog::level::err);
spdlog::flush_on(spdlog::level::err);
break;
2025-10-07 12:18:00 +02:00
case LogLevel::kDebug:
2025-06-13 22:23:20 +00:00
default:
this->logger_->set_level(spdlog::level::debug);
spdlog::flush_on(spdlog::level::debug);
}
2025-08-18 22:39:43 +00:00
// 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 to {}({})", __FUNCTION__, LogLevelToString(lvl), static_cast<int>(lvl)));
2025-06-13 22:23:20 +00:00
}