Windows Server 2003 SP1 中的错误日志记录

添加 W3C 样式标头

从具有 Service Pack 1(SP1 的 Windows Server 2003 开始),HTTP Server API 错误日志包括 W3C 样式标头,允许使用标准日志分析器分析日志文件。 下面显示的模板列出了可在 http 错误日志文件中记录的所有字段。

#Software: <Name of the HTTP Server>
#Version: 1.0 <Log format version>
#Date: <Log file creation date and time>
#Fields: <date time s-computername c-ip c-port s-ip s-port cs-version
         cs-method cs-uri cs(User-Agent) cs(Cookie) cs(referrer) 
         cs-host sc-status sc-bytes cs-bytes time-taken s-siteid  
         s- reason s-queuename <header names of fields logged>

记录其他字段

HTTP 错误日志已扩展为包含 9 个字段,用于记录有关发生的失败的数据。 下面列出了新的错误字段:

  • 服务器计算机名称 [S-COMPUTERNAME]
  • 用户代理 [CS(USER_AGENT)]
  • Cookie [CS(COOKIE)]
  • 引用者 [CS(引用者)]
  • 主机名 [CS-HOST]
  • 服务器接收的字节数 [SC-BYTES]
  • 服务器接收和处理的字节数 [CS-BYTES]
  • 处理请求所用的时间 [TIME-TAKEN]
  • Queue-Name (为 IIS 保留) [S-QUEUENAME]

选择“存档”以登录 HTTP 错误日志文件

ErrorLoggingFields 注册表项已添加,用于控制记录到 HTTP 错误日志中的字段。 此注册表值位于位于以下位置的 HTTP\Parameters 键下:

HKEY_LOCAL_MACHINE
   System
      CurrentControlSet
      Services
         HTTP
            Parameters

ErrorLoggingFields 注册表值是一个 DWORD 值,其中包含可记录的每个字段的位值。 若要启用特定字段的日志记录,请将相应的位值设置为 1 并重启 HTTP 服务。 若要禁用日志记录,请将位值设置为 0。 若要配置多个字段,请使用单个值的按位 OR。 例如,若要打开 Cookie 和引用者日志记录字段,该值应0x00020000 |0x00040000 = 0x00060000。 如果 ErrorLoggingFields 注册表项不存在,则会记录默认字段。 ErrorLoggingFields 值来记录默认字段0x7c884c7。 若要为下表中显示的所有字段启用日志记录,请将该值设置为0x7dff4e7。

下表列出了错误日志记录字段:

日志字段 默认记录 位值
日期 是的 0x00000001
时间 是的 0x00000002
服务器计算机名称 0x00000020
客户端 IP 地址 是的 0x00000004
客户端端口 是的 0x00400000
服务器 IP 地址 是的 0x00000040
服务器端口 是的 0x00008000
协议版本 是的 0x00080000
方法 是的 0x00000080
URI 是的 0x00800000
用户代理 0x00010000
饼干 0x00020000
引荐 0x00040000
主机 0x00100000
协议状态 是的 0x00000400
SC-Bytes 0x00001000
CS-Bytes 0x00002000
花费的时间 0x00004000
SiteId 是的 0x01000000
原因短语 是的 0x02000000
队列名称 0x04000000
流 ID 0x????????

 

时间和日期滚动更新

默认情况下,当当前日志文件达到指定大小时,会创建新的 HTTP 错误日志文件(术语文件滚动更新)。 从 Windows Server 2003 SP1 开始,可以根据日期和时间创建新的错误日志文件。 时间和日期滚动更新由两个新的注册表值控制:ErrorLoggingRolloverTypeErrorLoggingLocaltimeRollover。 若要启用时间和日期滚动更新,必须将这些注册表值添加到注册表。 将这些密钥添加到注册表时,必须重新启动 Http 服务。 日志文件滚动更新注册表项在以下项下创建:

HKEY_LOCAL_MACHINE
   System
      CurrentControlSet
         Services
            HTTP
               Parameters

ErrorLoggingRolloverType 注册表项指示所需的滚动更新类型,并且默认设置为基于大小的滚动更新。 还可以将滚动更新设置为每天、每周、每月或每小时进行。 当文件滚动更新基于时间时,ErrorLoggingLocaltimeRollover 值为 0 指示滚动更新时间以 GMT 表示,值为 1 表示本地时间滚动更新时间。 ErrorLoggingRolloverType 键可以采用从 0 到 4 的值,如下表所示。

滚动更新类型值 描述
0 基于大小的滚动更新。 当文件达到 ErrorLogFileTruncateSize 注册表项中定义的大小时,日志文件将滚动更新。
1 日志文件滚动更新每天发生。
2 日志文件滚动更新每周发生。
3 日志文件滚动更新每月发生。
4 日志文件滚动更新每小时发生。

 

存储错误日志的文件的命名约定因大小、日期和时间滚动更新而异。 下表列出了 Http 日志文件的命名约定。

收费类型 日志文件名称 描述
大小 HTTPERRn.LOG 日志文件在达到特定大小时回收。 n 是文件编号,在日志文件滚动更新时递增。
日常 htYYMMDD.log 日志文件每天回收。
周刊 htYYMMww.log 日志文件每周回收,其中 ww 是当月的一周。
每月 htYYMM.log 日志文件每月回收一次。
小时 htYYMMDDhh.log 日志文件按小时回收,hh 表示为 0-24 小时表示法表示的一天中的小时。