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()