HTTP Tracing <httpTracing>
Overview
The <httpTracing>
element allows you to configure selective request-based event tracing for incoming IIS requests.
<httpTracing>
contains a <traceUrls>
element, which contains a collection of <add>
elements.
Each <add>
element defines a unique URL to enable tracing.
Note
Event Tracing for Windows (ETW) is a general-purpose, high-speed tracing facility provided by the operating system. Using a buffering and logging mechanism implemented in the kernel, ETW provides a tracing mechanism for events raised by both user-mode applications and kernel-mode device drivers. Additionally, ETW gives you the ability to enable and disable logging dynamically, making it easy to perform detailed tracing in production environments without requiring reboots or application restarts. The logging mechanism uses per-processor buffers that are written to disk by an asynchronous writer thread. This allows large-scale server applications to write events with minimum disturbance.
Note
To enable IIS request-based ETW, install the TracingModule.
By default, IIS emits request-based ETW events for all URLs through the provider IIS: WWW Server with GUID {3A2A4E84-4C21-4981-AE10-3FDA0D9B0F83} (the detailed information can be found in the <traceProviderDefinitions>
element).
To enable the URL filter for ETW specified by the <traceUrls>
collection under the <httpTracing>
element, the first (least significant) bit of the trace flags must be set as 1 when running an ETW session.
For example, to enable IIS request-based ETW events ONLY for the URLs configured in the <traceUrls>
collection, set the trace flags to 0xFFFFFFFF for an ETW session with the provider IIS: WWW Server.
Such trace flags enable the URL filter as well as all trace areas.
To enable the same events for all URLs, set the trace flags to 0xFFFFFFE instead.
Note
The URL filter defined in the <traceUrls>
collection under the <httpTracing>
element only affects IIS request-based ETW and has no impact on failed request tracing.
Compatibility
Version | Notes |
---|---|
IIS 10.0 | The <httpTracing> element was not modified in IIS 10.0. |
IIS 8.5 | The <httpTracing> element was not modified in IIS 8.5. |
IIS 8.0 | The <httpTracing> element was not modified in IIS 8.0. |
IIS 7.5 | The <httpTracing> element was not modified in IIS 7.5. |
IIS 7.0 | The <httpTracing> element was introduced in IIS 7.0. |
IIS 6.0 | N/A |
Setup
The <httpTracing>
element is included in the default installation of IIS 7.
How To
There is no user interface for the <httpTracing>
element for IIS 7. For examples of how to access the <httpTracing>
element programmatically, see the Code Samples section of this document.
Configuration
You can configure the <httpTracing>
element at the server level in the ApplicationHost.config file, or at the site, application, or directory level in a Web.config file.
Attributes
None.
Child Elements
Element | Description |
---|---|
traceUrls |
Optional element. Specifies the URL for which you want to enable request-based ETW tracing. |
Configuration Sample
The following example will enable tracing for the sample home page that ships with IIS 7 when placed in a Web.config file in the root of the Default Web Site.
<configuration>
<system.webServer>
<httpTracing>
<traceUrls>
<add value="/iisstart.htm" />
</traceUrls>
</httpTracing>
</system.webServer>
</configuration>
Sample Code
The following examples enable tracing for the sample home page that ships with IIS 7 on Web site named Contoso by adding an entry to the <traceUrls>
collection for that site.
AppCmd.exe
appcmd.exe set config "Contoso" -section:system.webServer/httpTracing /+"traceUrls.[value='/iisstart.htm']" /commit:apphost
Note
You must be sure to set the commit parameter to apphost
when you use AppCmd.exe to configure these settings. This commits the configuration settings to the appropriate location section in the ApplicationHost.config file.
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()