节
<tracing>
组包含已配置失败的请求跟踪设置,并且包含安装过程中提供的跟踪提供程序定义,或者由你在 Internet Information Services (IIS) 7 Web 服务器上提供。
基于请求的跟踪提供了一个很好的方法,用于找出请求的确切情况,以及它发生的原因,前提是你可以重现服务器遇到的问题。 某些请求的性能不佳、其他请求上的身份验证相关故障或 ACTIVE Server Pages (ASP) 或 ASP.NET 中的 HTTP 500 状态代码错误等问题通常难以置信地进行故障排除,除非你捕获了问题发生时的跟踪。 失败请求跟踪旨在缓冲请求的跟踪事件,并且仅在请求根据所提供的故障定义失败时将其刷新到磁盘。
IIS 7 仅在安装并启用跟踪模块后显示这些消息。 它将这些消息和其他跟踪信息存储在名为失败事件跟踪日志文件的特殊文件中。 可以在 Web 浏览器中打开这些文件,并查看 IIS 生成的跟踪事件、第三方模块生成的自定义跟踪事件或两者。 默认情况下,IIS 7 将这些文件存储在 %systemroot%\inetpub\logs\FailedReqLogFiles 文件夹中。
该
<tracing>
节包含一个
<traceFailedRequests>
元素和一个
<traceProviderDefinition>
元素。 第一个元素为网站或应用程序配置失败的请求跟踪,第二个元素定义服务器上可用的跟踪提供程序。 默认情况下,IIS 7 包括 ASP、ASP.NET、Internet Server API (ISAPI) 扩展和 Web 服务器本身的跟踪提供程序。 还可以包括自定义跟踪提供程序。
完成 IIS 7 及更高版本的默认安装后,必须安装跟踪角色服务才能使用失败的请求跟踪。 安装角色服务后,仍必须在站点级别、应用程序级别或目录级别启用失败的请求跟踪。
Windows Server 2012 或 Windows Server 2012 R2
在任务栏上,单击
“服务器管理器”。
在
服务器管理器
中,单击“
管理
”菜单,然后单击“
添加角色和功能
”。
在
“添加角色和功能
”向导中,单击“
下一步
”。 选择安装类型,然后单击“
下一步
”。 选择目标服务器,然后单击“
下一步
”。
在
“服务器角色
”页上,展开
“Web 服务器” (IIS)
,展开
“Web 服务器
”,展开“
运行状况和诊断
”,然后选择“
跟踪
”。 单击“下一步”。
在“选择功能”
页上,单击“下一步”
。
在
“确认安装选择”
页上,单击
“安装”
。
在“结果”
页面中单击“关闭”
。
Windows 8或Windows 8.1
在
“开始
”屏幕上,将指针一路移动到左下角,右键单击“
开始
”按钮,然后单击
控制面板
。
在
控制面板
中,单击“
程序和功能
”,然后单击“
打开或关闭 Windows 功能
”。
展开
Internet Information Services
、展开
万维网服务
、展开
运行状况和诊断
,然后选择“
跟踪
”。
- 单击“
确定
”。
单击“关闭” 。
Windows Server 2008 或 Windows Server 2008 R2
在任务栏上,单击“
开始
”,指向
“管理工具
”,然后单击
服务器管理器
。
在
“服务器管理器
层次结构”窗格中,展开
“角色
”,然后单击
“Web 服务器” (IIS)
。
在
“Web Server (IIS)
”窗格中,滚动到
“角色服务
”部分,然后单击“
添加角色服务
”。
在
“添加角色服务向导
”的“
选择角色服务
”页上,选择“
跟踪
”,然后单击“
下一步
”。
在
“确认安装选择”
页中,单击
“安装”
。
在“结果”
页面中单击“关闭”
。
Windows Vista 或 Windows 7
在任务栏上,单击“
开始
”,然后单击
控制面板
。
在
控制面板
中,单击“
程序和功能
”,然后单击“
打开或关闭 Windows 功能
”。
展开
Internet Information Services
,然后展开
万维网服务
,然后展开
运行状况和诊断
。
选择“
跟踪
”,然后单击“
确定
”。
如何启用跟踪
打开
Internet Information Services (IIS) 管理器
:
如果使用 Windows Server 2012 或 Windows Server 2012 R2:
在任务栏上,单击
服务器管理器
,单击
“工具
”,然后单击“
Internet Information Services” (IIS) 管理器
。
如果使用Windows 8或Windows 8.1:
按住
Windows
键,按字母
X
,然后单击
控制面板
。
单击
“管理工具
”,然后双击“
Internet Information Services” (IIS) Manager
。
如果使用 Windows Server 2008 或 Windows Server 2008 R2:
在任务栏上,单击“
开始
”,指向
“管理工具
”,然后单击“
Internet Information Services” (IIS) 管理器
。
如果使用 Windows Vista 或 Windows 7:
在任务栏上,单击“
开始
”,然后单击
控制面板
。
双击
管理工具
,然后双击
“Internet Information Services” (IIS) 管理器
。
打开
Internet Information Services (IIS) 管理器
:
如果使用 Windows Server 2012 或 Windows Server 2012 R2:
在任务栏上,单击
服务器管理器
,单击
“工具
”,然后单击“
Internet Information Services” (IIS) 管理器
。
如果使用Windows 8或Windows 8.1:
按住
Windows
键,按字母
X
,然后单击
控制面板
。
单击
“管理工具
”,然后双击“
Internet Information Services” (IIS) Manager
。
如果使用 Windows Server 2008 或 Windows Server 2008 R2:
在任务栏上,单击“
开始
”,指向
“管理工具
”,然后单击“
Internet Information Services” (IIS) 管理器
。
如果使用 Windows Vista 或 Windows 7:
在任务栏上,单击“
开始
”,然后单击
控制面板
。
双击
管理工具
,然后双击
“Internet Information Services” (IIS) 管理器
。
在“
定义跟踪条件
”页上,选择要跟踪的条件,然后单击“
下一步
”。 跟踪条件可以包括状态代码的任意组合、请求应采用的时间限制或事件严重性。 如果指定所有条件,则满足的第一个条件将生成失败的请求跟踪日志文件。
在
“选择跟踪提供程序
”页上,选择
“提供程序
”下的一个或多个跟踪提供程序。
在
“选择跟踪提供程序
”页上,选择
详细程度
下的一个或多个详细级别。
如果在步骤 8 中选择了
ASPNET
或
WWW 服务器
跟踪提供程序,请在
“选择跟踪提供程序
”页的“
区域
”下选择要跟踪的提供程序的一个或多个功能区域。
单击“完成”。
可以在ApplicationHost.config文件或站点级别、应用程序级别或Web.config文件中的服务器级别配置
<tracing>
节组。
以下配置示例在ApplicationHost.config文件中的服务器级别配置跟踪。 它为所有 .aspx 文件设置跟踪,使用
<traceAreas>
元素设置
ASPNET
提供程序,并
针对基础结构、
模块
、
页面
和
AppServices
的所有 ASP.NET 区域进行跟踪。 此示例还使用
详细
属性将返回到跟踪文件的信息量设置为
警告
。 最后,该示例使用
<failureDefinitions>
元素仅跟踪生成 HTTP 404 状态代码的请求。
<tracing>
<traceFailedRequests>
<add path="*.aspx">
<traceAreas>
<add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Warning" />
</traceAreas>
<failureDefinitions statusCodes="404" />
</traceFailedRequests>
</tracing>
以下示例在对 *.aspx 页面的所有请求上启用 http 500 错误的详细失败请求跟踪 ASP.NET 内容。
AppCmd.exe
appcmd.exe set config "Contoso" -section:system.webServer/tracing/traceFailedRequests /+"[path='*.aspx']"
appcmd.exe set config "Contoso" -section:system.webServer/tracing/traceFailedRequests /+"[path='*.aspx'].traceAreas.[provider='ASPNET',areas='Infrastructure,Module,Page,AppServices',verbosity='Verbose']"
appcmd.exe set config "Contoso" -section:system.webServer/tracing/traceFailedRequests /[path='*.aspx'].failureDefinitions.statusCodes:"500"
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.GetWebConfiguration("Contoso");
ConfigurationSection traceFailedRequestsSection = config.GetSection("system.webServer/tracing/traceFailedRequests");
ConfigurationElementCollection traceFailedRequestsCollection = traceFailedRequestsSection.GetCollection();
ConfigurationElement addElement = traceFailedRequestsCollection.CreateElement("add");
addElement["path"] = @"*.aspx";
ConfigurationElementCollection traceAreasCollection = addElement.GetCollection("traceAreas");
ConfigurationElement addElement1 = traceAreasCollection.CreateElement("add");
addElement1["provider"] = @"ASPNET";
addElement1["areas"] = @"Infrastructure,Module,Page,AppServices";
addElement1["verbosity"] = @"Verbose";
traceAreasCollection.Add(addElement1);
ConfigurationElement failureDefinitionsElement = addElement.GetChildElement("failureDefinitions");
failureDefinitionsElement["statusCodes"] = @"500";
traceFailedRequestsCollection.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.GetWebConfiguration("Contoso")
Dim traceFailedRequestsSection As ConfigurationSection = config.GetSection("system.webServer/tracing/traceFailedRequests")
Dim traceFailedRequestsCollection As ConfigurationElementCollection = traceFailedRequestsSection.GetCollection
Dim addElement As ConfigurationElement = traceFailedRequestsCollection.CreateElement("add")
addElement("path") = "*.aspx"
Dim traceAreasCollection As ConfigurationElementCollection = addElement.GetCollection("traceAreas")
Dim addElement1 As ConfigurationElement = traceAreasCollection.CreateElement("add")
addElement1("provider") = "ASPNET"
addElement1("areas") = "Infrastructure,Module,Page,AppServices"
addElement1("verbosity") = "Verbose"
traceAreasCollection.Add(addElement1)
Dim failureDefinitionsElement As ConfigurationElement = addElement.GetChildElement("failureDefinitions")
failureDefinitionsElement("statusCodes") = "500"
traceFailedRequestsCollection.Add(addElement)
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Contoso";
var traceFailedRequestsSection = adminManager.GetAdminSection("system.webServer/tracing/traceFailedRequests", "MACHINE/WEBROOT/APPHOST/Contoso");
var traceFailedRequestsCollection = traceFailedRequestsSection.Collection;
var addElement = traceFailedRequestsCollection.CreateNewElement("add");
addElement.Properties.Item("path").Value = "*.aspx";
var traceAreasCollection = addElement.ChildElements.Item("traceAreas").Collection;
var addElement1 = traceAreasCollection.CreateNewElement("add");
addElement1.Properties.Item("provider").Value = "ASPNET";
addElement1.Properties.Item("areas").Value = "Infrastructure,Module,Page,AppServices";
addElement1.Properties.Item("verbosity").Value = "Verbose";
traceAreasCollection.AddElement(addElement1);
var failureDefinitionsElement = addElement.ChildElements.Item("failureDefinitions");
failureDefinitionsElement.Properties.Item("statusCodes").Value = "500";
traceFailedRequestsCollection.AddElement(addElement);
adminManager.CommitChanges();
VBScript
Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Contoso"
Set traceFailedRequestsSection = adminManager.GetAdminSection("system.webServer/tracing/traceFailedRequests", "MACHINE/WEBROOT/APPHOST/Contoso")
Set traceFailedRequestsCollection = traceFailedRequestsSection.Collection
Set addElement = traceFailedRequestsCollection.CreateNewElement("add")
addElement.Properties.Item("path").Value = "*.aspx"
Set traceAreasCollection = addElement.ChildElements.Item("traceAreas").Collection
Set addElement1 = traceAreasCollection.CreateNewElement("add")
addElement1.Properties.Item("provider").Value = "ASPNET"
addElement1.Properties.Item("areas").Value = "Infrastructure,Module,Page,AppServices"
addElement1.Properties.Item("verbosity").Value = "Verbose"
traceAreasCollection.AddElement addElement1
Set failureDefinitionsElement = addElement.ChildElements.Item("failureDefinitions")
failureDefinitionsElement.Properties.Item("statusCodes").Value = "500"
traceFailedRequestsCollection.AddElement addElement
adminManager.CommitChanges()