2022-01-14 20:45:36 +01:00
|
|
|
#include "core/stdafx.h"
|
|
|
|
#include "core/logdef.h"
|
|
|
|
|
|
|
|
//#############################################################################
|
|
|
|
// SPDLOG SETUP
|
|
|
|
//#############################################################################
|
|
|
|
void SpdLog_Init(void)
|
|
|
|
{
|
|
|
|
static bool bInitialized = false;
|
|
|
|
|
|
|
|
if (bInitialized)
|
|
|
|
{
|
|
|
|
Assert(bInitialized, "'SpdLog_Init()' has already been called.");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2022-12-27 02:28:43 +01:00
|
|
|
g_svLogSessionDirectory = fmt::format("platform\\logs\\{:s}\\", CreateTimedFileName());
|
2022-01-14 20:45:36 +01:00
|
|
|
/************************
|
|
|
|
* IMGUI LOGGER SETUP *
|
|
|
|
************************/
|
|
|
|
{
|
|
|
|
auto iconsole = std::make_shared<spdlog::logger>("game_console", g_spd_sys_p_ostream_sink);
|
|
|
|
spdlog::register_logger(iconsole); // in-game console logger.
|
2022-07-26 02:34:22 +02:00
|
|
|
iconsole->set_pattern("[0.000] %v");
|
2022-01-14 20:45:36 +01:00
|
|
|
iconsole->set_level(spdlog::level::trace);
|
|
|
|
}
|
|
|
|
|
|
|
|
/************************
|
|
|
|
* WINDOWS LOGGER SETUP *
|
|
|
|
************************/
|
|
|
|
{
|
|
|
|
auto wconsole = spdlog::stdout_logger_mt("win_console");
|
|
|
|
|
|
|
|
// Determine if user wants ansi-color logging in the terminal.
|
2022-08-11 11:07:45 +02:00
|
|
|
if (g_svCmdLine.find("-ansiclr") != string::npos)
|
2022-01-14 20:45:36 +01:00
|
|
|
{
|
2022-07-26 02:34:22 +02:00
|
|
|
wconsole->set_pattern("[0.000] %v\u001b[0m");
|
2022-01-14 20:45:36 +01:00
|
|
|
g_bSpdLog_UseAnsiClr = true;
|
|
|
|
}
|
2022-07-26 02:34:22 +02:00
|
|
|
else { wconsole->set_pattern("[0.000] %v"); }
|
2022-01-14 20:45:36 +01:00
|
|
|
wconsole->set_level(spdlog::level::trace);
|
|
|
|
spdlog::set_default_logger(wconsole); // Set as default.
|
|
|
|
}
|
|
|
|
|
|
|
|
/************************
|
|
|
|
* ROTATE LOGGER SETUP *
|
|
|
|
************************/
|
|
|
|
{
|
2022-12-27 02:28:43 +01:00
|
|
|
spdlog::rotating_logger_mt<spdlog::synchronous_factory>("sqvm_warn" , fmt::format("{:s}sqvm_warn.log" , g_svLogSessionDirectory), SPDLOG_MAX_SIZE, SPDLOG_NUM_FILE)->set_pattern("[%Y-%m-%d %H:%M:%S.%e] %v");
|
|
|
|
spdlog::rotating_logger_mt<spdlog::synchronous_factory>("sqvm_info" , fmt::format("{:s}sqvm_info.log" , g_svLogSessionDirectory), SPDLOG_MAX_SIZE, SPDLOG_NUM_FILE)->set_pattern("[%Y-%m-%d %H:%M:%S.%e] %v");
|
|
|
|
spdlog::rotating_logger_mt<spdlog::synchronous_factory>("sdk_info" , fmt::format("{:s}sdk_info.log" , g_svLogSessionDirectory), SPDLOG_MAX_SIZE, SPDLOG_NUM_FILE)->set_pattern("[%Y-%m-%d %H:%M:%S.%e] %v");
|
|
|
|
spdlog::rotating_logger_mt<spdlog::synchronous_factory>("sdk_warn" , fmt::format("{:s}sdk_warn.log" , g_svLogSessionDirectory), SPDLOG_MAX_SIZE, SPDLOG_NUM_FILE)->set_pattern("[%Y-%m-%d %H:%M:%S.%e] %v");
|
|
|
|
spdlog::rotating_logger_mt<spdlog::synchronous_factory>("sdk_error" , fmt::format("{:s}sdk_error.log" , g_svLogSessionDirectory), SPDLOG_MAX_SIZE, SPDLOG_NUM_FILE)->set_pattern("[%Y-%m-%d %H:%M:%S.%e] %v");
|
|
|
|
spdlog::rotating_logger_mt<spdlog::synchronous_factory>("qhull_info", fmt::format("{:s}qhull_info.log" , g_svLogSessionDirectory), SPDLOG_MAX_SIZE, SPDLOG_NUM_FILE)->set_pattern("[%Y-%m-%d %H:%M:%S.%e] %v");
|
|
|
|
spdlog::rotating_logger_mt<spdlog::synchronous_factory>("net_trace" , fmt::format("{:s}net_trace.log" , g_svLogSessionDirectory), SPDLOG_MAX_SIZE, SPDLOG_NUM_FILE)->set_pattern("[%Y-%m-%d %H:%M:%S.%e] %v");
|
2022-08-03 18:34:44 +02:00
|
|
|
#ifndef DEDICATED
|
2022-12-27 02:28:43 +01:00
|
|
|
spdlog::rotating_logger_mt<spdlog::synchronous_factory>("net_con" , fmt::format("{:s}net_console.log", g_svLogSessionDirectory), SPDLOG_MAX_SIZE, SPDLOG_NUM_FILE)->set_pattern("[%Y-%m-%d %H:%M:%S.%e] %v");
|
2022-08-03 18:34:44 +02:00
|
|
|
#endif // !DEDICATED
|
2022-12-27 02:28:43 +01:00
|
|
|
spdlog::rotating_logger_mt<spdlog::synchronous_factory>("fs_warn" , fmt::format("{:s}fs_warn.log" ,g_svLogSessionDirectory), SPDLOG_MAX_SIZE, SPDLOG_NUM_FILE)->set_pattern("[%Y-%m-%d %H:%M:%S.%e] %v");
|
2022-01-14 20:45:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
spdlog::set_level(spdlog::level::trace);
|
|
|
|
spdlog::flush_every(std::chrono::seconds(5)); // Flush buffers every 5 seconds for every logger.
|
|
|
|
|
|
|
|
bInitialized = true;
|
|
|
|
}
|
2022-06-20 15:48:33 +02:00
|
|
|
|
|
|
|
void SpdLog_PostInit()
|
|
|
|
{
|
|
|
|
std::shared_ptr<spdlog::logger> iconsole = spdlog::get("game_console");
|
|
|
|
std::shared_ptr<spdlog::logger> wconsole = spdlog::get("win_console");
|
|
|
|
|
|
|
|
iconsole->set_pattern("%v");
|
|
|
|
|
2022-08-11 11:07:45 +02:00
|
|
|
if (g_svCmdLine.find("-ansiclr") != string::npos)
|
2022-06-20 15:48:33 +02:00
|
|
|
{
|
|
|
|
wconsole->set_pattern("%v\u001b[0m");
|
|
|
|
g_bSpdLog_UseAnsiClr = true;
|
|
|
|
}
|
|
|
|
else { wconsole->set_pattern("%v"); }
|
2022-09-14 00:39:38 +02:00
|
|
|
g_bSpdLog_PostInit = true;
|
2022-06-20 15:48:33 +02:00
|
|
|
}
|