HTTP トレース: <httpTracing>

概要

<httpTracing> 要素を使うと、受信 IIS 要求に対する選択的な要求ベースのイベント トレースを構成できます。 <httpTracing> には <traceUrls> 要素が含まれ、それには <add> 要素のコレクションが含まれます。 各 <add> 要素では、トレースを有効にするための一意の URL が定義されています。

Note

Windows イベント トレーシング (ETW) は、オペレーティング システムによって提供される汎用の高速トレース機能です。 ETW は、カーネルに実装されているバッファリングとログ メカニズムを使って、ユーザー モード アプリケーションとカーネル モード デバイス ドライバーの両方で発生するイベントのトレース メカニズムを提供します。 さらに、ETW を使うと、ログを動的に有効または無効にできるため、リブートしたりアプリケーションを再起動したりする必要なしに、運用環境での詳細なトレースを簡単に実行できます。 ログ メカニズムでは、非同期ライター スレッドによってディスクに書き込まれる、プロセッサごとのバッファーが使われます。 これにより、大規模なサーバー アプリケーションでも最小限の影響でイベントを書き込むことができます。

Note

IIS 要求ベースの ETW を有効にするには、TracingModule をインストールします。

既定では、IIS は、プロバイダー IIS: WWW Server (GUID は {3A2A4E84-4C21-4981-AE10-3FDA0D9B0F83}) を通して、すべての URL に対する要求ベースの ETW イベントを出力します (詳しくは、<traceProviderDefinitions> 要素をご覧ください)。 <httpTracing> 要素の <traceUrls> コレクションで指定されている ETW の URL フィルターを有効にするには、ETW セッションの実行時に、トレース フラグの先頭 (最下位) ビットを 1 に設定する必要があります。 たとえば、<traceUrls> コレクションで構成されている URL に対してのみ、IIS 要求ベースの ETW イベントを有効にするには、プロバイダー IIS: WWW Server で ETW セッションのトレース フラグを 0xFFFFFFFF に設定します。 このようなトレース フラグを使うと、URL フィルターと、すべてのトレース領域が有効になります。 すべての URL で同じイベントを有効にするには、代わりにトレース フラグを 0xFFFFFFE に設定します。

Note

<httpTracing> 要素の <traceUrls> コレクションで定義されている URL フィルターは、IIS 要求ベースの ETW にのみ影響し、失敗した要求のトレースには影響しません。

互換性

バージョン メモ
IIS 10.0 <httpTracing> 要素は、IIS 10.0 では変更されませんでした。
IIS 8.5 <httpTracing> 要素は、IIS 8.5 では変更されませんでした。
IIS 8.0 <httpTracing> 要素は、IIS 8.0 では変更されませんでした。
IIS 7.5 <httpTracing> 要素は、IIS 7.5 では変更されませんでした。
IIS 7.0 <httpTracing> 要素が IIS 7.0 で導入されました。
IIS 6.0 該当なし

段取り

<httpTracing> 要素は IIS 7 の既定のインストールに含まれています。

操作方法

IIS 7 の <httpTracing> 要素のユーザー インターフェイスはありません。 プログラムで <httpTracing> 要素にアクセスする方法の例については、このドキュメントのコード サンプルのセクションを参照してください。

構成

<httpTracing> 要素は、ApplicationHost.config ファイルを使ってサーバー レベルで、または Web.config ファイルを使ってサイト、アプリケーション、ディレクトリのレベルで構成できます。

属性

なし。

子要素

要素 説明
traceUrls 省略可能な要素です。

要求ベースの ETW トレースを有効にする URL を指定します。

構成サンプル

次の例では、IIS 7 に付属するサンプル ホーム ページが既定の Web サイトのルートにある Web.config ファイルに配置されたら、そのトレースを有効にします。

<configuration>
   <system.webServer>
      <httpTracing>
         <traceUrls>
            <add value="/iisstart.htm" />
         </traceUrls>
      </httpTracing>
   </system.webServer>
</configuration>

サンプル コード

次の例では、Contoso という名前の Web サイト上にある、IIS 7 に付属するサンプル ホーム ページのトレースを、そのサイトのエントリを <traceUrls> コレクションに追加して、有効にします。

AppCmd.exe

appcmd.exe set config "Contoso" -section:system.webServer/httpTracing /+"traceUrls.[value='/iisstart.htm']" /commit:apphost

Note

AppCmd.exe を使用してこれらの設定を構成するときは、commit パラメーターを必ず apphost に設定する必要があります。 これで、ApplicationHost.config ファイルの適切な場所セクションに構成設定がコミットされます。

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection httpTracingSection = config.GetSection("system.webServer/httpTracing", "Contoso");
         ConfigurationElementCollection traceUrlsCollection = httpTracingSection.GetCollection("traceUrls");

         ConfigurationElement addElement = traceUrlsCollection.CreateElement("add");
         addElement["value"] = @"/iisstart.htm";
         traceUrlsCollection.Add(addElement);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim httpTracingSection As ConfigurationSection = config.GetSection("system.webServer/httpTracing", "Contoso")

      Dim traceUrlsCollection As ConfigurationElementCollection = httpTracingSection.GetCollection("traceUrls")
      Dim addElement As ConfigurationElement = traceUrlsCollection.CreateElement("add")
      addElement("value") = "/iisstart.htm"
      traceUrlsCollection.Add(addElement)

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var httpTracingSection = adminManager.GetAdminSection("system.webServer/httpTracing", "MACHINE/WEBROOT/APPHOST/Contoso");

var traceUrlsCollection = httpTracingSection.ChildElements.Item("traceUrls").Collection;
var addElement = traceUrlsCollection.CreateNewElement("add");
addElement.Properties.Item("value").Value = "/iisstart.htm";
traceUrlsCollection.AddElement(addElement);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set httpTracingSection = adminManager.GetAdminSection("system.webServer/httpTracing", "MACHINE/WEBROOT/APPHOST/Contoso")

Set traceUrlsCollection = httpTracingSection.ChildElements.Item("traceUrls").Collection
Set addElement = traceUrlsCollection.CreateNewElement("add")
addElement.Properties.Item("value").Value = "/iisstart.htm"
traceUrlsCollection.AddElement addElement

adminManager.CommitChanges()