カスタムのプラットフォーム依存ロガーを使用するアプリケーションに取り組んでいます。アプリケーションはいくつかの printf スタイルのマクロを定義します:
#define LOG_DEBUG(format, ...) \
logger.log(DEBUG, __FUNCTION__, format, ##__VA_ARGS__)
...
ここ数日、アプリケーションを使用するように移動する作業を行ってきましたboost.log
。私が抱えている最大の問題は、boost のログ API が iostream スタイルで実装されているため、ロガーの内部のみを変更する必要があるように、このマクロ形式を保持しようとすることです。
BOOST_LOG(logger) << "something";
- 文字列バッファを使用せずに、printf スタイルの引数を取得してブースト ロガーに出力するマクロを提供する簡単な方法はありますか? (文字列にフォーマットする必要があると、パフォーマンスに影響があると思います)
- そうでない場合、さまざまなプラットフォームの書式設定関数の実装を
va_args
必要とせずに文字列を書式設定する方法はありますか?#ifdef
(これは、そもそもboost.logに移行することの全体的なポイントでした)