に入れるために、関数ポインタに包まれたマクロC++私は(ブーストログライブラリから)次のように見えるかもしれませんマクロを持つベクトル
#define L_(lvl) BOOST_LOG_USE_LOG_IF_LEVEL(g_l(), g_log_level(), lvl)
はブーストにこれをラップすることが可能です::機能<>オブジェクト関数ポインタをキューまたはそのようなアイテムのベクトルに張り付けることができますか?
もしそうなら、どうすればいいですか?
ログファイルにすべてのログを書き込む1つのスレッドがあり、どのワーカースレッドでもログに記録できる必要がありますが、アクティブなログレベルに依存するメカニズムを作成しようとしています。 dは、ログに記録されるように設定されたものだけを記録します。だから私はログメッセージを待ち行列に入れるための待ち行列を作成し、専用のスレッドでそれぞれのファイルに書き込むので、たくさんのロギングが必要なときにプログラムを遅くしないようにします。私はboost :: logライブラリを使いたいので、このマクロで作業する必要があります。
lvl
は、この機能に渡すログレベルです。 L_(debug) << "some log text";
と、このL_マクロがログメッセージのために取るストリーミング<<演算子はどうですか?ファンクタを使用し、その演算子にオーバーロードする必要がありますか? –