2012-02-14 6 views
0

デバッグメッセージを標準出力に出力するためにdebug = Trueなどの設定を有効にすることができるC++のログ機能はありますか?C++のlogger.debug機能

+0

まあそこ[この](http://www.cplusplus.com/reference/iostream/clog/は)ですが、それはstderr' 'に行きます。 –

答えて

1

通常のトリックは、このように書きます:自動的に

void writeLog(const char* message); // Define elsewhere to do your logging 

#ifdef DEBUG 
#define Log(x) writeLog(x) 
#else 
#define Log(x) 
#endif 

// Somewhere in your main code 
Log("This message is only seen if DEBUG is defined at compilation"); 
+0

デバッグの価値に応じて、ログは別のものとして定義されます。申し訳ありませんが、このタイプの関数定義には少し新しいです。 – Cemre

+1

そうです。 '#'ディレクティブはプリプロセッサの一部です。本質的に、コードがコンパイルされる前に、プリプロセッサは物理的にそれを書き換えます。 'DEBUG'が定義されている場合(通常はプロジェクト設定やコマンドラインコンパイラへの切り替え)、' Log'は 'writeLog'に置き換えられます。定義されていなければ、 'Log'は何も置き換えられないので、何もしません。 – Chowlett

+1

標準には、 'assert'マクロに影響するシンボル' NDEBUG'が定義されています。したがって、ロギングとアサーションが同じスイッチ上にあるようにするには、そのスイッチを使用することができます。そうでない場合は、 'NDEBUG'がfalseの場合に' DEBUG'を定義するコードを追加できます。 –

0

ありません。しかし、独自のメソッドを選択的に定義することができます。

#ifdef DEBUG 
#define DEBUG_MSG(msg) debug(msg) 
#else 
#define DEBUG_MSG(msg) 
#endif