FEX/FEXCore/Source/Utils/LogManager.cpp
Ryan Houdek b523407a3e
LogManager: Removes fextl::vector usage
We never use more than one logging method at a time so this was
overengineered for what it is doing.

Instead only allow one handler for messages and throw messages each
which just is a pointer.

Removes a global initializer and an atexit handler being installed
2024-07-11 22:51:56 -07:00

51 lines
1015 B
C++

// SPDX-License-Identifier: MIT
/*
$info$
tags: glue|log-manager
$end_info$
*/
#include <FEXCore/Utils/CompilerDefs.h>
#include <FEXCore/Utils/LogManager.h>
#include <FEXCore/fextl/fmt.h>
namespace LogMan {
namespace Throw {
ThrowHandler Handler {};
void InstallHandler(ThrowHandler _Handler) {
Handler = _Handler;
}
void UnInstallHandler() {
Handler = nullptr;
}
void MFmt(const char* fmt, const fmt::format_args& args) {
if (Handler) {
auto msg = fextl::fmt::vformat(fmt, args);
Handler(msg.c_str());
}
FEX_TRAP_EXECUTION;
}
} // namespace Throw
namespace Msg {
MsgHandler Handler {};
void InstallHandler(MsgHandler _Handler) {
Handler = _Handler;
}
void UnInstallHandler() {
Handler = nullptr;
}
void MFmtImpl(DebugLevels level, const char* fmt, const fmt::format_args& args) {
if (Handler) {
const auto msg = fextl::fmt::vformat(fmt, args);
Handler(level, msg.c_str());
}
}
} // namespace Msg
} // namespace LogMan