私が作業しているプロジェクトのログファイルシステムに少しの機能を追加したいと考えています。私の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()
と出力から呼ばれたことを判断できるようにしたいと思い、その関数の名前の代わりのものを置きます手でどこでも。
EDIT:私は私のLogError()
機能(およびその他のログ機能)は、本質的にvfwprintf_s()
のラッパーであるので、彼らは、可変長引数リストを取ることができることを言及している必要があります。私は「マクロを使う」のが好きですが、その潜在的な問題に取り組む方法はわかりません(おそらく別の質問です)。
まだまだは合理的/可能ですか?
ありがとうございます!
私は可変長引数リストを処理する必要があると言うことは、私のオリジナルのポストを更新しました。より複雑なタスクにマクロを使用することにはあまり慣れていません。追加の警告が表示されたままでもこれを行うことはできますか? – chaosTechnician
@chaosTechnician:何も見逃していない場合は、書式設定引数の前に関数名引数を渡すだけです。個人的には、有用な情報(行番号、ファイル名)の各ビットの引数とメッセージの引数を渡します。ロギングはすべてをフォーマットします。 –