我希望为我正在处理的项目的日志文件系统添加一些功能。对于我的LogError()
调用,我想包含发生错误的函数。我想知道是否有一种方法可以访问调用的函数的名称,LogError()
以便我可以以编程方式访问该信息以将其添加到日志中。
例如:
bool Engine::GraphicsManager::Initialize(const HWND i_hWindow_main)
{
if ( !InitializeWindow( i_hWindow_main ) )
{
Engine::LogManager::Instance().LogError(L"GraphicsManager::Initialize - Unable to initialize graphics window");
return false;
}
Engine::LogManager::Instance().LogMessage(L"Graphics window initialized successfully");
/* SNIP */
initialized = true;
return true;
}
在上面的示例中,我希望LogError()
能够确定它是从中调用GraphicsManager::Initialize()
并输出(至少部分)该函数的名称,而不是手动将其放在任何地方。
编辑:我应该提到我的LogError()
函数(和其他日志记录函数)本质上是包装器,vfwprintf_s()
因此它们可以采用可变长度参数列表。虽然我喜欢“使用宏”的建议,但我不确定如何解决这个潜在问题(这可能是另一个问题)。
这仍然合理/可能吗?
谢谢!