Files
LibCommon/Source/Common/Log.cpp
T
Lioncache 8489a1d4ee Log: Migrate over to spdlog
Makes the logging subsystem much simpler and tosses all the printf
shenanigans out.
2026-01-03 14:28:18 -05:00

56 lines
1.4 KiB
C++

#include "Common/Log.h"
#include "Common/TString.h"
#include <chrono>
#include <cstdio>
#include <iostream>
#include <memory>
#include <spdlog/spdlog.h>
#include <spdlog/fmt/chrono.h>
#include <spdlog/sinks/basic_file_sink.h>
#include <spdlog/sinks/stdout_color_sinks.h>
#ifdef _WIN32
#include <spdlog/sinks/msvc_sink.h>
#endif
namespace NLog
{
static bool gInitialized = false;
bool InitLog(const TString& rkFilename)
{
if (gInitialized)
return true;
try
{
std::vector<spdlog::sink_ptr> sinks{
std::make_shared<spdlog::sinks::stdout_color_sink_mt>(),
std::make_shared<spdlog::sinks::basic_file_sink_mt>(rkFilename.ToStdString(), true),
#ifdef _WIN32
std::make_shared<spdlog::sinks::msvc_sink_mt>(true)
#endif
};
auto logger = std::make_shared<spdlog::logger>("axio", sinks.begin(), sinks.end());
logger->set_level(spdlog::level::debug);
logger->info("Opened log file at: {:%m/%d/%y %H:%M:%S}", std::chrono::system_clock::now());
#ifdef APP_FULL_NAME
logger->info("{}", APP_FULL_NAME "\n");
#endif
logger->flush();
spdlog::register_logger(logger);
gInitialized = true;
return true;
}
catch (const spdlog::spdlog_ex& ex)
{
std::cerr << "Unable to initialize logger: " << ex.what() << '\n';
return false;
}
}
}