ACEサービス側プログラミング5:ACEログ出力と追跡

2581 ワード

サーバ・プログラムは、printfを使用する最も簡単な方法で、コマンド・ラインにエラー・メッセージ、ステータス、またはプログラムの実行パスを追跡する必要があることが多い.
ACEは、より強力なログ・デバイスを提供します.
1、コンパイル時にマクロを有効または無効にすることができる.
2、マクロを動的に有効または無効にすることができる.
3、サポートログの重大度レベル;
4、ログのリダイレクトをサポートする;
5、マルチスレッドセキュリティとスレッドレベルの構成をサポートする;
ACEのログ関連機能を使用するには、ヘッダファイル.
ACEログ出力
ACEは、ログ出力をサポートする2つのマクロを提供します:ACE_DEBUG、ACE_ERROR.
この2つのマクロの内部実装と動作は同じであり、デバッグ情報とエラー情報を意味的に区別するためだけである.
導入ヘッダファイルの前に以下の定義を追加するとログ出力を閉じることができ、ACE_DEBUG、ACE_ERRORは空の文に置き換えられます.
#define ACE_NLOGGING 1

ACE_DEBUG、ACE_ERRORの使用例:
ACE_DEBUG((LM_STARTUP, ACE_TEXT("Startup.
"))); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("hook2: %d
"), *paramp)); ACE_ERROR((LM_ERROR, ACE_TEXT("config file %s is not found.
"), szConfigFile.c_str())

ACE_の使用DEBUG、ACE_ERRORマクロで注意すべき点は、2対のカッコを使用してパラメータを包む必要があることです.
最初のパラメータはクリティカル・レベルです.ACEは、ログのクリティカル・レベルを構成して、そのレベルのログ出力を表示または閉じることができます.
LM_DEBUG、LM_ERROR、LM_INFO、LM_ALERT、LM_WARNINGなど、レベルに優先度がなく、最もよく使われるのがLM_DEBUG、LM_ERROR.
2番目のパラメータは、フォーマット文字列、一般的な命令セットをサポートします.
%A:浮動小数点数
%s:文字列
%d:10進数
%M:重大度レベル
%N:ファイル名
%P:プロセスID
%t:スレッドID
%D:現在時刻
%I:インデント
ACE呼び出しトレース
ACE定義ACE_TRACEマクロは、関数の呼び出しを追跡するために使用され、具体的には、定義された場所で出力が生成され、その役割ドメインを終了したときに別の出力が生成される.
ACE_TRACEの実装は,スタック上のオブジェクトとして展開され,その構築関数と解析関数にログがそれぞれ出力される.
void foo()
{
    ACE_TRACE(ACE_TEXT("foo
")) int a = 0; int b = 0; int c = b; }

ACE_TRACEは単一文字列のみを受信し、フォーマット文字列はサポートされず、出力されたログの重大度レベルはLM_である.TRACE.
ACE_TRACEのデフォルトは無効で、ネット上でよく友达がACEが見えないと反映しています.TRACEの出力は、多くの回答が間違っており、単純にプロジェクトで定義#define ACE_NTRACE 0も機能しません.
ace/config.hヘッダファイルで、他のヘッダファイルを参照する前にACEライブラリを定義して再コンパイルする必要があります.
#define ACE_NTRACE 0

記録して、もっと良い自分のために!転載は出典を明記してください!