2017-08-10 24 views
0

私のアプリケーションでC++ライブラリモジュールを作成しています。ロギングを行うには、spdlogを使用します。しかし、実稼働環境では、私のlibモジュールにロギングを行わせたくありません。私はこれらの条件文を書いて回避する方法を探していますコードのspdlogロギングを有効/無効にする方法は?

#ifdef logging 
    // call the logger here. 
#endif 

/オフをオン達成するための一つの方法は...ゴミのような#ifdefを条件付きで自分のコードになります。 #ifdefをチェックして書き込むラッパー関数かもしれません。しかし、このアプローチの問題は、すべてのロギングメソッド(情報、トレース、警告、エラーなど)にラッパーを記述する必要があることです。

良い方法はありますか?

+1

あなたのコードのほとんどが手つかずせhttps://github.com/gabime/spdlog/wiki/1.-QuickStart#debugtrace-macros –

答えて

1

私はspdlogを知らない。

ただし、一般的に使用されるインクルードファイルの1つにマクロを定義したり、logcallを何も置き換えたり、コンパイラオプティマイザが排除する空のインライン関数を呼び出すことができます。

"app.h" で

#ifndef LOG 

#ifdef logging 
#define LOG spdlog 
#endif 

#ifndef logging 
#define LOG noop 
#endif 

#endif 

あなたのアイデアを得ましたか。

これは

+0

をチェックはい、THX。私が確認したように、それは普通の機能のために働く。しかし、spdlogがtrace()、info()などのメンバfnsを持つクラスであれば、コンパイルされません。 –

+0

私はこのアプローチもクラスで動作するはずだと思います。あなたの現在のコードの様子を記録してください。たぶん私や他の人たちがあなたに他のアプローチを提供するかもしれない –

関連する問題