次の方法で共有


トレースとメッセージロギング

TracingAndLogging サンプルでは、トレースとメッセージ のログ記録を有効にする方法を示します。 結果のトレースとメッセージ ログは、 サービス トレース ビューアー ツール (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>

トレース ソースの詳細については、「トレースの構成」トピックの「トレース ソース セクションを参照してください。

アクティビティのトレースと伝達

クライアントとサービスの両方のActivityTracingトレース ソースでpropagateActivitytrue有効にしてsystem.ServiceModel設定すると、処理 (アクティビティ) の論理単位内、エンドポイント内のアクティビティ間 (アクティビティ転送を通じて)、および複数のエンドポイントにまたがるアクティビティ間 (アクティビティ ID 伝達を通じて) トレースの相関関係が提供されます。

これらの 3 つのメカニズム (アクティビティ、転送、伝達) は、サービス トレース ビューアー ツールを使用して、エラーの根本原因をより迅速に特定するのに役立ちます。 詳細については、「 相関トレースの表示とトラブルシューティングにサービス トレース ビューアーを使用する」を参照してください。

ユーザー定義のアクティビティ トレースを作成することで、ServiceModel によって提供されるトレースを拡張できます。 ユーザー定義アクティビティ トレースを使用すると、ユーザーは次のトレース アクティビティを作成できます。

  • トレースを論理作業単位にグループ化します。

  • 転送と伝達を通じてアクティビティを関連付けます。

  • 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>

メッセージが記録される場合、トレースの種類は、クライアントとサーバーのどちらでトレースされているかによって異なります。 たとえば、クライアントに送信される "追加" メッセージはクライアントの "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\ が存在することを確認するか、リスナー構成で代替ログ ディレクトリを指定します。 詳細については、このドキュメントの最後にある初期セットアップ手順を参照してください。

メッセージ ログの詳細については、「メッセージ ログの 構成」 トピックを参照してください。

サンプルを設定、ビルド、実行するには

  1. Windows Communication Foundation サンプル One-Time セットアップ手順を実行していることを確認します。

  2. トレースとメッセージログのサンプルを実行する前に、.svclog ファイルを書き込むサービスのディレクトリ C:\logs\ を作成します。 このディレクトリの名前は、ログに記録されるトレースとメッセージのパスとして構成ファイルで定義され、変更できます。 ユーザーに、ネットワーク サービスにログ ディレクトリへの書き込みアクセス権を付与します。

  3. ソリューションの C#、C++、または Visual Basic .NET エディションをビルドするには、「 Windows Communication Foundation サンプルのビルド」の手順に従います。

  4. シングル コンピューター構成またはクロスコンピューター構成でサンプルを実行するには、「 Windows Communication Foundation サンプルの実行」の手順に従います。

こちらも参照ください