トレースとメッセージ ログ
このサンプルでは、トレースとメッセージ ログを有効にする方法を示します。結果のトレースとメッセージ ログは、Service Trace Viewer Tool (SvcTraceViewer.exe) を使用することによって表示されます。このサンプルは、「入門サンプル」に基づいています。
![]() |
---|
このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 |
トレース
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>
トレース ソースの詳細については、「Configuring Tracing」トピックの「トレース ソース」セクションを参照してください。
アクティビティのトレースと伝達
クライアントとサービスの両方の system.ServiceModel トレース ソースで ActivityTracing を有効にして propagateActivity を true に設定することにより、処理の論理単位 (アクティビティ) 内や、エンドポイント内のアクティビティ間 (アクティビティ転送を使用)、および複数のエンドポイントにわたるアクティビティ間 (アクティビティ ID の伝達を使用) で、トレースを相互に関連付けることができます。
3 つの機構 (アクティビティ、転送、および伝達) により、サービス トレース ビューア ツールを使用してエラーの根本原因をより迅速に見つけることができます。詳細については、「Using Service Trace Viewer for Viewing Correlated Traces and Troubleshooting」を参照してください。
ユーザー定義のアクティビティ トレースを作成することにより、サービス モデルによって提供されるトレースを拡張することができます。ユーザー定義のアクティビティ トレースによって、次の操作を可能にするトレース アクティビティを作成できます。
複数のトレースを作業の論理単位ごとにグループ化します。
転送や伝達を利用してアクティビティを相互に関連付けます。
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 形式で記録されます。
![]() |
---|
最初にログ ディレクトリが作成されていないと、トレース ファイルは作成されません。ディレクトリ C:\logs\ が存在することを確認するか、またはリスナの構成でログ記録用の代替ディレクトリを指定します。詳細については、このドキュメントの最後にある初期セットアップ手順を参照してください。 |
メッセージ ログの詳細については、トピック「Configuring Message Logging」を参照してください。
サンプルを設定、ビルド、および実行するには
「Windows Communication Foundation サンプルの 1 回限りのセットアップの手順」が実行済みであることを確認します。
トレースとメッセージ ログのサンプルを実行する前に、サービスによって .svclog ファイルが書き込まれるディレクトリ C:\logs\ を作成します。このディレクトリ名は、トレースとメッセージがログ記録されるパスとして、構成ファイル内で定義されます。この名前は変更可能です。ユーザー Network Service に、そのログ ディレクトリへの書き込みアクセスを与えます。
ソリューションの C# 版、C++ 版、または Visual Basic .NET 版をビルドするには、「Windows Communication Foundation サンプルのビルド」の手順に従います。
サンプルを単一コンピュータ構成または複数コンピュータ構成で実行するには、「Windows Communication Foundation サンプルの実行」の手順に従います。
関連項目
その他の技術情報
Copyright © 2007 by Microsoft Corporation.All rights reserved.