From 0de09217bc708a419f3829d0e5caa5230dcda750 Mon Sep 17 00:00:00 2001 From: Kawe Mazidjatari <48657826+Mauler125@users.noreply.github.com> Date: Mon, 20 Jun 2022 15:48:33 +0200 Subject: [PATCH] Log process uptime Log actual process uptime in all (post init) loggers. The actual process uptime is obtained from the engine (Plat_FloatTime()). --- r5dev/core/init.cpp | 3 +++ r5dev/core/logdef.cpp | 15 +++++++++++++++ r5dev/core/logdef.h | 1 + r5dev/gameui/IConsole.cpp | 2 +- r5dev/squirrel/sqvm.cpp | 39 ++++++++++++++++++++++++++------------- r5dev/tier0/dbg.cpp | 24 +++++++++++++++--------- r5dev/tier0/platform.cpp | 8 ++++++++ r5dev/tier0/platform.h | 1 + 8 files changed, 70 insertions(+), 23 deletions(-) diff --git a/r5dev/core/init.cpp b/r5dev/core/init.cpp index a6bfcfd0..b0af5ec5 100644 --- a/r5dev/core/init.cpp +++ b/r5dev/core/init.cpp @@ -5,6 +5,7 @@ //=============================================================================// #include "core/stdafx.h" +#include "core/logdef.h" #include "core/init.h" #include "tier0/jobthread.h" #include "tier0/threadtools.h" @@ -233,6 +234,8 @@ void Systems_Init() #ifdef DEDICATED Dedicated_Init(); #endif // DEDICATED + + SpdLog_PostInit(); } ////////////////////////////////////////////////////////////////////////// diff --git a/r5dev/core/logdef.cpp b/r5dev/core/logdef.cpp index 36df6c9d..80711942 100644 --- a/r5dev/core/logdef.cpp +++ b/r5dev/core/logdef.cpp @@ -60,3 +60,18 @@ void SpdLog_Init(void) bInitialized = true; } + +void SpdLog_PostInit() +{ + std::shared_ptr iconsole = spdlog::get("game_console"); + std::shared_ptr wconsole = spdlog::get("win_console"); + + iconsole->set_pattern("%v"); + + if (strstr(g_svCmdLine.c_str(), "-ansiclr")) + { + wconsole->set_pattern("%v\u001b[0m"); + g_bSpdLog_UseAnsiClr = true; + } + else { wconsole->set_pattern("%v"); } +} \ No newline at end of file diff --git a/r5dev/core/logdef.h b/r5dev/core/logdef.h index 4da41962..9f37a61c 100644 --- a/r5dev/core/logdef.h +++ b/r5dev/core/logdef.h @@ -11,3 +11,4 @@ inline std::ostringstream g_spd_sys_w_oss; inline auto g_spd_sys_p_ostream_sink = std::make_shared(g_spd_sys_w_oss); void SpdLog_Init(void); +void SpdLog_PostInit(void); diff --git a/r5dev/gameui/IConsole.cpp b/r5dev/gameui/IConsole.cpp index c6645aa3..508ca97c 100644 --- a/r5dev/gameui/IConsole.cpp +++ b/r5dev/gameui/IConsole.cpp @@ -542,7 +542,7 @@ void CConsole::FindFromPartial(void) //----------------------------------------------------------------------------- void CConsole::ProcessCommand(const char* pszCommand) { - AddLog(ImVec4(1.00f, 0.80f, 0.60f, 1.00f), "] %s\n", PrintPercentageEscape(pszCommand).c_str()); + AddLog(ImVec4(1.00f, 0.80f, 0.60f, 1.00f), "%s] %s\n", Plat_GetProcessUpTime(), PrintPercentageEscape(pszCommand).c_str()); std::thread t(CEngineClient_CommandExecute, this, pszCommand); t.detach(); // Detach from render thread. diff --git a/r5dev/squirrel/sqvm.cpp b/r5dev/squirrel/sqvm.cpp index 0389f7b0..24e6757a 100644 --- a/r5dev/squirrel/sqvm.cpp +++ b/r5dev/squirrel/sqvm.cpp @@ -54,7 +54,8 @@ SQRESULT SQVM_PrintFunc(HSQUIRRELVM v, SQChar* fmt, ...) #endif break; } - static SQChar buf[1024] = {}; + static SQChar buf[4096] = {}; + static std::string vmStr; static std::regex rxAnsiExp("\\\033\\[.*?m"); static std::shared_ptr iconsole = spdlog::get("game_console"); @@ -72,7 +73,8 @@ SQRESULT SQVM_PrintFunc(HSQUIRRELVM v, SQChar* fmt, ...) va_end(args); }///////////////////////////// - std::string vmStr = SQVM_LOG_T[static_cast(context)]; + vmStr = Plat_GetProcessUpTime(); + vmStr.append(SQVM_LOG_T[static_cast(context)]); vmStr.append(buf); if (sq_showvmoutput->GetInt() > 0) { @@ -91,17 +93,20 @@ SQRESULT SQVM_PrintFunc(HSQUIRRELVM v, SQChar* fmt, ...) } else { - std::string vmStrAnsi; + static std::string vmStrAnsi; if (g_bSQAuxError) { bColorOverride = true; if (strstr(buf, "SCRIPT ERROR:") || strstr(buf, " -> ")) { bError = true; - vmStrAnsi = SQVM_ERROR_ANSI_LOG_T[static_cast(context)]; + vmStrAnsi = Plat_GetProcessUpTime(); + vmStrAnsi.append(SQVM_ERROR_ANSI_LOG_T[static_cast(context)]); } - else { - vmStrAnsi = SQVM_WARNING_ANSI_LOG_T[static_cast(context)]; + else + { + vmStrAnsi = Plat_GetProcessUpTime(); + vmStrAnsi.append(SQVM_WARNING_ANSI_LOG_T[static_cast(context)]); } } else if (g_bSQAuxBadLogic) @@ -111,14 +116,20 @@ SQRESULT SQVM_PrintFunc(HSQUIRRELVM v, SQChar* fmt, ...) bError = true; bColorOverride = true; g_bSQAuxBadLogic = false; - vmStrAnsi = SQVM_ERROR_ANSI_LOG_T[static_cast(context)]; + + vmStrAnsi = Plat_GetProcessUpTime(); + vmStrAnsi.append(SQVM_ERROR_ANSI_LOG_T[static_cast(context)]); } - else { - vmStrAnsi = SQVM_ANSI_LOG_T[static_cast(context)]; + else + { + vmStrAnsi = Plat_GetProcessUpTime(); + vmStrAnsi.append(SQVM_ANSI_LOG_T[static_cast(context)]); } } - else { - vmStrAnsi = SQVM_ANSI_LOG_T[static_cast(context)]; + else + { + vmStrAnsi = vmStrAnsi = Plat_GetProcessUpTime();; + vmStrAnsi.append(SQVM_ANSI_LOG_T[static_cast(context)]); } vmStrAnsi.append(buf); wconsole->debug(vmStrAnsi); @@ -205,7 +216,8 @@ SQRESULT SQVM_WarningFunc(HSQUIRRELVM v, SQInteger a2, SQInteger a3, SQInteger* static std::shared_ptr wconsole = spdlog::get("win_console"); static std::shared_ptr sqlogger = spdlog::get("sqvm_warn"); - std::string vmStr = SQVM_LOG_T[static_cast(context)]; + std::string vmStr = Plat_GetProcessUpTime(); + vmStr.append(SQVM_LOG_T[static_cast(context)]); std::string svConstructor(*ppString, *nStringSize); // Get string from memory via std::string constructor. vmStr.append(svConstructor); @@ -221,7 +233,8 @@ SQRESULT SQVM_WarningFunc(HSQUIRRELVM v, SQInteger a2, SQInteger a3, SQInteger* } else { - std::string vmStrAnsi = SQVM_WARNING_ANSI_LOG_T[static_cast(context)]; + std::string vmStrAnsi = Plat_GetProcessUpTime(); + vmStrAnsi.append(SQVM_WARNING_ANSI_LOG_T[static_cast(context)]); vmStrAnsi.append(svConstructor); wconsole->debug(vmStrAnsi); #ifdef DEDICATED diff --git a/r5dev/tier0/dbg.cpp b/r5dev/tier0/dbg.cpp index 11a6d4e5..bb7c6a5d 100644 --- a/r5dev/tier0/dbg.cpp +++ b/r5dev/tier0/dbg.cpp @@ -82,7 +82,7 @@ PLATFORM_INTERFACE void AssertValidWStringPtr(const wchar_t* ptr, int maxchar/* //----------------------------------------------------------------------------- void DevMsg(eDLL_T context, const char* fmt, ...) { - static char szBuf[2048] = {}; + static char szBuf[4096] = {}; static std::string svOut; static std::string svAnsiOut; @@ -104,7 +104,8 @@ void DevMsg(eDLL_T context, const char* fmt, ...) va_end(args); }///////////////////////////// - svOut = sDLL_T[static_cast(context)]; + svOut = Plat_GetProcessUpTime(); + svOut.append(sDLL_T[static_cast(context)]); svOut.append(szBuf); svOut = std::regex_replace(svOut, rxAnsiExp, ""); @@ -122,7 +123,8 @@ void DevMsg(eDLL_T context, const char* fmt, ...) } else { - svAnsiOut = sANSI_DLL_T[static_cast(context)]; + svAnsiOut = Plat_GetProcessUpTime(); + svAnsiOut.append(sANSI_DLL_T[static_cast(context)]); svAnsiOut.append(szBuf); if (svAnsiOut.back() != '\n') @@ -188,7 +190,7 @@ void DevMsg(eDLL_T context, const char* fmt, ...) //----------------------------------------------------------------------------- void Warning(eDLL_T context, const char* fmt, ...) { - static char szBuf[2048] = {}; + static char szBuf[4096] = {}; static std::string svOut; static std::string svAnsiOut; @@ -210,7 +212,8 @@ void Warning(eDLL_T context, const char* fmt, ...) va_end(args); }///////////////////////////// - svOut = sDLL_T[static_cast(context)]; + svOut = Plat_GetProcessUpTime(); + svOut.append(sDLL_T[static_cast(context)]); svOut.append(szBuf); svOut = std::regex_replace(svOut, rxAnsiExp, ""); @@ -228,7 +231,8 @@ void Warning(eDLL_T context, const char* fmt, ...) } else { - svAnsiOut = sANSI_DLL_T[static_cast(context)]; + svAnsiOut = Plat_GetProcessUpTime(); + svAnsiOut.append(sANSI_DLL_T[static_cast(context)]); svAnsiOut.append(g_svYellowF); svAnsiOut.append(szBuf); @@ -263,7 +267,7 @@ void Warning(eDLL_T context, const char* fmt, ...) //----------------------------------------------------------------------------- void Error(eDLL_T context, const char* fmt, ...) { - static char szBuf[2048] = {}; + static char szBuf[4096] = {}; static std::string svOut; static std::string svAnsiOut; @@ -285,7 +289,8 @@ void Error(eDLL_T context, const char* fmt, ...) va_end(args); }///////////////////////////// - svOut = sDLL_T[static_cast(context)]; + svOut = Plat_GetProcessUpTime(); + svOut.append(sDLL_T[static_cast(context)]); svOut.append(szBuf); svOut = std::regex_replace(svOut, rxAnsiExp, ""); @@ -303,7 +308,8 @@ void Error(eDLL_T context, const char* fmt, ...) } else { - svAnsiOut = sANSI_DLL_T[static_cast(context)]; + svAnsiOut = Plat_GetProcessUpTime(); + svAnsiOut.append(sANSI_DLL_T[static_cast(context)]); svAnsiOut.append(g_svRedF); svAnsiOut.append(szBuf); diff --git a/r5dev/tier0/platform.cpp b/r5dev/tier0/platform.cpp index 7e8af4a1..6fda90eb 100644 --- a/r5dev/tier0/platform.cpp +++ b/r5dev/tier0/platform.cpp @@ -10,3 +10,11 @@ uint64_t Plat_MSTime() { return v_Plat_MSTime(); } + +const char* Plat_GetProcessUpTime() +{ + static char szBuf[4096]; + sprintf_s(szBuf, sizeof(szBuf), "[%.3f] ", Plat_FloatTime()); + + return szBuf; +} \ No newline at end of file diff --git a/r5dev/tier0/platform.h b/r5dev/tier0/platform.h index e359dd6c..5f670b57 100644 --- a/r5dev/tier0/platform.h +++ b/r5dev/tier0/platform.h @@ -171,6 +171,7 @@ inline uint64_t Plat_Rdtsc() } double Plat_FloatTime(); uint64_t Plat_MSTime(); +const char* Plat_GetProcessUpTime(); //----------------------------------------------------------------------------- // Silences a number of warnings on 360 compiles