通常,HTTP API 错误日志文件具有和 W3C 错误日志相同的格式,除了 HTTP 错误日志文件不包含列标题外。HTTP API 错误日志的每一行都记录一个错误。字段按特定顺序显示。单个空格字符 (0x0020) 将每一个字段与前一个字段分隔开。在每一个字段中,加号 (0x002B) 替换空格字符、标记和非打印控制字符。
日志路径:C:\WINDOWS\system32\LogFiles\HTTPERR
下表标识了错误日志记录中的字段及字段顺序。
字段 | 说明 |
日期 | “日期”字段采用 W3C 格式。该字段基于协调世界时 (UTC)。“日期”字段始终采用十字符的 YYYY-MM-DD 格式。例如,2003 年 5 月 1 日表示为 2003-05-01。 |
时间 | “时间”字段采用 W3C 格式。该字段基于 UTC。“时间”字段始终采用八字符的 MM:HH:SS 格式。例如,5:30 PM (UTC) 表示为 17:30:00。 |
客户端 IP 地址 | 受影响客户端的 IP 地址。该字段中的值可以是 IPv4 地址或 IPv6 地址。如果客户端 IP 地址是 IPv6 地址,则 ScopeId 字段也包含在该地址中。 |
客户端端口 | 受影响客户端的端口号。 |
服务器 IP 地址 | 受影响服务器的 IP 地址。该字段中的值可以是 IPv4 地址或 IPv6 地址。如果服务器 IP 地址是 IPv6 地址,则 ScopeId 字段也包含在该地址中。 |
服务器端口 | 受影响服务器的端口号。 |
协议版本 | 目前所使用的协议的版本。 |
谓词 | 由经解析的最后一次请求传递的谓词状态。包含未知谓词,但是任何超过 255 字节的谓词都被截断至此长度。如果没有可用的谓词,则使用连字符 (0x002D) 作为空字段的占位符。 |
CookedURL + Query | URL 及任何与其关联的查询都被记录为一个字段,并以问号分隔 (0x3F)。该字段在其 4096 字节的长度限制处被截断。 |
协议状态 | 协议状态不得大于 999。 |
SiteId | 不用于此版本的 HTTP API。占位符连字符 (0x002D) 始终在此字段中显示。 |
原因短语 | 此字段包含可识别正被记录的错误类型的字符串。该字段绝不可留空。 |
队列名称 | 这是请求队列名称。 |
以下示例行来自 HTTP API 错误日志:
2002-07-05 18:45:09 172.31.77.6 2094 172.31.77.6 80 HTTP/1.1 GET /qos/1kbfile.txt 503 – ConnLimit 2002-07-05 19:51:59 127.0.0.1 2780 127.0.0.1 80 HTTP/1.1 GET /ThisIsMyUrl.htm 400 – Hostname 2002-07-05 19:53:00 127.0.0.1 2894 127.0.0.1 80 HTTP/2.0 GET / 505 - Version_N/S 2002-07-05 20:06:01 172.31.77.6 64388 127.0.0.1 80 - - - - - Timer_MinBytesPerSecond
HTTP API 日志所记录的错误类型
HTTP API 日志错误响应客户端、连接超时、孤立的请求和因处理不当而丢弃的连接。
以下列表标识了 HTTP API 记录的错误类型:
响应客户端HTTP API 向客户端发送错误响应,例如由上次接收请求中的解析错误导致的 400 错误。在 HTTP API 发送错误响应之后,它会终止连接。
连接超时 HTTP API 使连接超时。如果在连接超时的时候有请求挂起,则该请求可用于在错误日志中提供有关该连接的详细信息。
孤立的请求 用户模式进程意外退出,同时仍有路由到该进程的排队请求。HTTP API 在错误日志中记录了孤立的请求。
特定错误类型由始终显示为每个错误行最后一个字段的“原因短语”字符串来指定。下表标识了 HTTP API 原因短语。
原因短语 | 说明 |
AppOffline | 发生服务不可用错误(HTTP 错误 503)。服务不可用,因为应用程序错误导致该应用程序变为脱机状态。 |
AppPoolTimer | 发生服务不可用错误(HTTP 错误 503)。服务不可用,因为应用程序池进程太忙从而无法处理请求。 |
AppShutdown | 发生服务不可用错误(HTTP 错误 503)。服务不可用,因为应用程序因响应管理员策略而自动关闭。 |
BadRequest | 处理请求时出现解析错误。 |
Client_Reset | 在可以将请求分配给工作进程之前,客户端和服务器之间的连接已关闭。此行为的最常见原因是,客户端过早地关闭了它到服务器的连接。 |
Connection_Abandoned_By_AppPool | 来自应用程序池的工作进程已经意外退出,或者通过关闭其句柄孤立了挂起请求。 |
Connection_Abandoned_By_ReqQueue | 来自应用程序池的工作进程已经意外退出,或者通过关闭其句柄孤立了挂起请求。特定于 Windows Vista 和 Windows Server 2008。 |
Connection_Dropped | 在服务器可以发送其最终响应数据包之前,客户端和服务器之间的连接已关闭。此行为的最常见原因是,客户端过早地关闭了它到服务器的连接。 |
Connection_Dropped_List_Full | 客户端和服务器之间的丢弃连接的列表已满。特定于 Windows Vista 和 Windows Server 2008。 |
ConnLimit | 发生服务不可用错误(HTTP 错误 503)。该服务不可用,因为已达到或超过站点级别连接限制。 |
Connections_Refused | 内核 NonPagedPool 内存已下降到 20MB 以下,http.sys 已停止接收新连接。 |
已禁用 | 发生服务不可用错误(HTTP 错误 503)。该服务不可用,因为管理员已将应用程序变为脱机状态。 |
EntityTooLarge | 实体超过了所允许的最大大小。 |
FieldLength | 已超过字段长度限制。 |
已禁止 | 在解析时遇到已禁止的元素或序列。 |
标头 | 标头中发生解析错误。 |
主机名 | 在处理主机名时发生解析错误。 |
内部 | 发生内部服务器错误(HTTP 错误 500)。 |
Invalid_CR/LF | 出现非法的回车或换行。 |
LengthRequired | 必需的长度值丢失。 |
N/A | 发生服务不可用错误(HTTP 错误 503)。该服务不可用,因为发生内部错误(如内存分配失败之类)。 |
N/I | 由于未知的转换编码,发生未执行错误(HTTP 错误 501),或服务不可用错误(HTTP 错误 503). |
编号 | 在处理编号时发生解析错误。 |
前提条件 | 必需的前提条件丢失。 |
QueueFull | 发生服务不可用错误(HTTP 错误 503)。该服务不可用,因为应用程序请求队列已满。 |
RequestLength | 已超过请求长度限制。 |
Timer_AppPool | 连接已过期,因为某请求在服务器应用程序的应用程序池队列中等候时间过长,从而无法取消排队并处理它。该超时持续时间为 ConnectionTimeout。默认情况下,该值设置为两分钟。 |
Timer_ConnectionIdle | 连接过期并保持空闲。默认的 ConnectionTimeout 持续时间为两分钟。 |
Timer_EntityBody | 连接在请求实体到达之前过期。当请求确定具有实体时,HTTP API 将打开Timer_EntityBody 计时器。最初,此计时器的限制设置为 ConnectionTimeout 值(通常为 2 分钟)。每当接收到与该请求有关的其他数据指示时,HTTP API 会重置计时器,以多给连接两分钟的时间(或 ConnectionTimeout 中指定的任意时间)。 |
Timer_HeaderWait | 连接超时,因为请求的标头解析时间超过了默认的两分钟限制。 |
Timer_MinBytesPerSecond | 连接超时,因为客户端未接收具有合理速度的响应。响应发送率慢于 240 字节/秒的默认值。这可以通过 MinFileBytesPerSec 元数据库属性控制。 |
Timer_ReqQueue | 连接已过期,因为某请求在服务器应用程序的应用程序池队列中等候时间过长,从而无法取消排队。该超时持续时间为 ConnectionTimeout。默认情况下,该值设置为两分钟。特定于 Windows Vista 和 Windows Server 2008。 |
Timer_Response | 已保留。当前未使用。 |
Timer_SslRenegotiation | 连接已过期,因为客户端和服务器之间的 SSL 重新协商时间超过了默认的两分钟超时时间。 |
URL | 处理 URL 时发生解析错误。 |
URL_Length | URL 超过最大允许大小。 |
谓词 | 处理谓词时解析发生错误。 |
Version_N/S | 发生版本不受支持的错误(HTTP 错误 505)。 |