私はC++でログハンドラーを実装していますが、それは問題なく機能しますが、使用できるものが1つあり、それがロガーが出力を取得する場所です。
これはそれほど大きな問題ではないと思いますが、__func__
基本的に現在の関数の関数名を保持する識別子に出くわしました。
したがって、Logクラスにと呼ばれる静的関数がWrite
あります。これはログレベルと変数リストを取ります。だから私はそれをそのように呼ぶでしょう:
Log::Write(LOG_DEBUG, "this is an integer: %d", 10);
そしてそれは印刷されます:
2013-01-02 => 10:12:01.366 [DEBUG]: this is an integer: 10
ただし、次のようなものを作成するには、メッセージに発信者も含めると便利だと思っていました。
2013... => 10:12:... (functionName) [DEBUG]: blah
だから私ができることは(もちろん)に__func__
パラメータとしてを追加するLog::Write
ことですが、それは私が呼び出すときはいつLog::Write
でも送信する必要があることを意味します__func__
これは常に同じであり、それなしでそれを行うことができるはずだと感じています明示的にそう言っています。
だから私が欲しいのは、以下で提供される機能です。
Log::Write(LOG_DEBUG, __func__, "message");
毎回明示的にfuncを入力する必要はありません。
これが本当に可能かどうかはわかりませんが、私が得た最善の策は、関数内で呼び出し元を逆参照する方法があることWrite
です。そのようなパラメーターを「推測」できる可能性は低いようです。 。しかし、少なくとも尋ねる価値があり、多分私はどんなオプションがあるかを見ることができます。
ありがとう。