Files
clio/tests/common/util/LoggerFixtures.cpp
2026-03-24 15:25:32 +00:00

56 lines
1.5 KiB
C++

#include "util/LoggerFixtures.hpp"
#include "util/log/Logger.hpp"
#include <spdlog/common.h>
#include <spdlog/logger.h>
#include <spdlog/pattern_formatter.h>
#include <spdlog/sinks/ostream_sink.h>
#include <spdlog/spdlog.h>
#include <algorithm>
#include <memory>
#include <string_view>
void
LoggerFixture::init()
{
util::LogServiceState::init(false, util::Severity::FTL, {});
std::ranges::for_each(util::Logger::kCHANNELS, [](std::string_view const channel) {
util::LogService::registerLogger(channel);
});
spdlog::set_default_logger(spdlog::get("General"));
}
void
LoggerFixture::resetTestingLoggers()
{
auto ostreamSink = std::make_shared<spdlog::sinks::ostream_sink_mt>(buffer_.getStream());
ostreamSink->set_formatter(std::make_unique<spdlog::pattern_formatter>("%^%3!l:%n%$ - %v"));
ostreamSink->set_level(spdlog::level::trace);
util::LogServiceState::replaceSinks({ostreamSink});
spdlog::apply_all([](std::shared_ptr<spdlog::logger> logger) {
logger->set_level(spdlog::level::trace);
});
spdlog::get("General")->set_level(spdlog::level::debug);
}
LoggerFixture::LoggerFixture()
{
util::LogServiceState::reset();
util::LogServiceState::init(false, util::Severity::TRC, {});
resetTestingLoggers();
}
LoggerFixture::~LoggerFixture()
{
util::LogServiceState::replaceSinks({});
spdlog::apply_all([](std::shared_ptr<spdlog::logger> logger) {
logger->set_level(spdlog::level::critical);
});
}