トレースとメッセージ ログ
TracingAndLogging サンプルでは、トレースとメッセージ ログを有効にする方法を示します。 結果のトレースとメッセージ ログは、サービス トレース ビューアー ツール (SvcTraceViewer.exe) を使用して表示されます。 このサンプルは、「入門サンプル」に基づいています。
Note
このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。
トレース
Windows Communication Foundation (WCF) では、System.Diagnostics 名前空間で定義されているトレース機構が使用されます。 このトレース モデルのトレース データは、アプリケーションが実装するトレース ソースによって作成されます。 各ソースは、名前によって識別されます。 トレース コンシューマでは、情報を取得するトレース ソースのトレース リスナが作成されます。 トレース データを受け取るには、トレース ソースのリスナを作成する必要があります。 WCF でこれを行うには、サービスまたはクライアントの構成ファイルに次のコードを追加して、サービス モデルのトレース ソース switchValue
を設定します。
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Information,ActivityTracing"
propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="C:\logs\TracingAndLogging-service.svclog" type="System.Diagnostics.XmlWriterTraceListener"
name="xml" />
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
トレース ソースの詳細については、「トレースの構成」トピックのトレース ソースに関するセクションを参照してください。
アクティビティのトレースと伝達
クライアントとサービスの両方の system.ServiceModel
トレース ソースで ActivityTracing
を有効にして propagateActivity
を true
に設定すると、処理の論理単位 (アクティビティ) 内、エンドポイント内のアクティビティ間 (アクティビティ転送を使用)、および複数のエンドポイントにわたるアクティビティ間 (アクティビティ ID の伝達を使用) で、トレースを相互に関連付けることができます。
3 つの機構 (アクティビティ、転送、および伝達) により、サービス トレース ビューア ツールを使用してエラーの根本原因をより迅速に見つけることができます。 詳細については、「サービス トレース ビューアーを使用した相関トレースの表示とトラブルシューティング」を参照してください。
ユーザー定義のアクティビティ トレースを作成することにより、サービス モデルによって提供されるトレースを拡張することができます。 ユーザー定義のアクティビティ トレースによって、次の操作を可能にするトレース アクティビティを作成できます。
複数のトレースを作業の論理単位ごとにグループ化します。
転送や伝達を利用してアクティビティを相互に関連付けます。
WCF トレースのパフォーマンス コスト (ログ ファイルによるディスク領域コストなど) を軽減します。
ユーザー定義のアクティビティ トレースの詳細については、「トレースの拡張」のサンプルを参照してください。
メッセージ ログ
メッセージ ログは、任意の WCF アプリケーションのクライアントとサービスの両方で有効にできます。 メッセージ ログを有効にするには、クライアントとサービスのどちらかに次のコードを追加する必要があります。
<configuration>
<system.serviceModel>
<diagnostics>
<!-- Enable Message Logging here. -->
<!-- log all messages received or sent at the transport or service model levels -->
<messageLogging logEntireMessage="true"
maxMessagesToLog="300"
logMessagesAtServiceLevel="true"
logMalformedMessages="true"
logMessagesAtTransportLevel="true" />
</diagnostics>
</system.serviceModel>
</configuration>
メッセージが記録されるときのトレースの種類は、そのメッセージがクライアントでトレースされるか、またはサーバーでトレースされるかによって異なります。 たとえば、クライアントに送信される "Add" メッセージは、クライアントでは "TransportWrite" カテゴリの下でトレースされるのに対し、サービスでは同じメッセージが "TransportRead" カテゴリの下でトレースされます。
クライアントの App.config ファイルまたはサービスの Web.config ファイルの System.Diagnostics セクションに次のコードを追加して、トレース リスナを構成します。
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Information,ActivityTracing"
propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="C:\logs\TracingAndLogging-client.svclog" type="System.Diagnostics.XmlWriterTraceListener"
name="xml" />
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
メッセージは、構成ファイルで指定された対象ディレクトリ内に XML 形式で記録されます。
Note
最初にログ ディレクトリが作成されていないと、トレース ファイルは作成されません。 ディレクトリ C:\logs\ が存在することを確認するか、またはリスナの構成でログ記録用の代替ディレクトリを指定します。 詳細については、このドキュメントの最後にある初期セットアップ手順を参照してください。
メッセージ ログの詳細については、「メッセージ ログの構成」トピックを参照してください。
サンプルをセットアップ、ビルド、および実行するには
Windows Communication Foundation サンプルの 1 回限りのセットアップの手順を実行したことを確認します。
トレースとメッセージ ログのサンプルを実行する前に、サービスによって .svclog ファイルが書き込まれるディレクトリ C:\logs\ を作成します。 このディレクトリ名は、トレースとメッセージがログ記録されるパスとして、構成ファイル内で定義されます。この名前は変更可能です。 ユーザー Network Service に、そのログ ディレクトリへの書き込みアクセスを与えます。
ソリューションの C#、C++、Visual Basic .NET 版をビルドするには、「Windows Communication Foundation サンプルのビルド」の手順に従います。
単一または複数コンピューター構成でサンプルを実行するには、「Windows Communication Foundation サンプルの実行」の手順に従います。