IIS 的高级日志记录 - 自定义日志记录

作者:Vishal Sood

IIS 高级日志记录在记录用户请求和客户端数据方面提供了极大的灵活性。 高级日志记录不会假定哪些信息对你重要, 而是提供足够的控制度让你指定哪些字段重要,轻松添加其他字段,并提供有关日志文件滚动更新和请求筛选的策略。 可以在 IIS 管理器中通过简单配置来记录任何 HTTP 请求/响应头、IIS 服务器变量和客户端字段。

安装

IIS 高级日志记录是 Internet Information Services (IIS) 7 的扩展,现在不再可用。 我们建议使用 IIS 8.5 的增强型日志记录

必须满足以下先决条件才能安装 IIS 高级日志记录:

  • 必须使用在以下操作系统之一上运行的 IIS 7:

    • Windows Server 2008
    • Windows Server 2008 R2
    • Windows Vista SP1
    • Windows 7
  • 若要使用 IIS 管理器用户界面管理 IIS 高级日志记录功能,必须安装 IIS 的 IIS 管理控制台。

以下选项可用于安装IIS 高级日志记录:

  • Windows Installer 文件(适用于所选操作系统的 32 位和 64 位版本)

概念

日志定义。 定义在 Web 服务器上生成的每个日志文件中记录的字段。 它还设置其他选项,例如日志文件滚动更新间隔、基本日志文件名等。

全局日志记录字段。 高级日志记录维护日志记录字段的主列表(全局日志记录字段列表),管理员可以将其添加到 IIS 管理器中的日志定义。 可以使用 IIS 管理界面将自定义日志记录字段添加到全局日志记录字段列表(并通过扩展添加到日志定义)。 可从以下源类型添加自定义日志记录字段:

  • 模块。 记录其他 IIS 模块发布的字段。 客户端字段使用此选项。
  • 请求头。 请求中包含的标准和自定义 HTTP 头。
  • 响应头。 请求响应中包含的标准和自定义 HTTP 头。
  • 服务器变量IIS 服务器变量

关于高级日志记录用户界面

本部分包含有关 IIS 高级日志记录 UI 的以下主题:

打开高级日志记录

可以在 IIS 管理器中为服务器、网站和目录配置 IIS 高级日志记录。 若要打开高级日志记录功能,请单击“连接”窗格中的服务器、网站或目录,然后双击“主页”上的“高级日志记录”图标
“默认网站主页”屏幕的屏幕截图,其中突出显示了“I S”部分中的“高级日志记录”选项。

启用和禁用服务器日志记录

默认情况下,IIS 高级日志记录在安装后处于禁用状态。 若要启用该功能以便它能够处理来自其他 Web 服务器组件的日志消息,请在 IIS 管理器的服务器级别将其打开,然后在“操作”窗格中单击“启用高级日志记录”

“操作”部分突出显示了“启用高级日志记录”选项。

以后若要禁用该功能,请在 IIS 管理器的服务器级别将其打开,然后在“操作”窗格中单击“禁用高级日志记录”
“禁用高级日志记录”选项上突出显示的操作部分。

启用和禁用客户端日志记录

默认情况下,高级日志记录功能中的客户端日志记录在安装后处于禁用状态。 若要启用高级日志记录功能中的客户端日志记录,以便它可以处理通过 HTTP POST 消息作为 XML 数据接收的客户端日志消息,请在 IIS 管理器中的服务器级别打开高级日志记录功能,然后在“操作”窗格中单击“启用客户端日志记录”
“操作”窗格,其中突出显示了“启用客户端日志记录”选项。

以后若要禁用客户端日志记录,请在 IIS 管理器中的服务器级别打开高级日志记录功能,然后在“操作”窗格中单击“禁用客户端日志记录”
“操作”窗格,其中突出显示了“禁用客户端日志记录”选项。

注意

有关如何使用客户端日志记录的详细信息,请参阅 IIS 的高级日志记录 - 客户端日志记录

关于日志定义

高级日志记录功能在 IIS 管理器的服务器“主页”中显示服务器上可用的所有日志定义。 下图显示了日志定义 %COMPUTERNAME%-Server,它是默认安装的,从内容传送的角度捕获一些相关字段。
“高级日志记录”屏幕的屏幕截图,其中显示了日志定义 %COMPUTERNAME%-Server。

若要查看此日志定义包含的字段,请单击日志定义名称,然后在“操作”窗格中单击“编辑日志定义”。 这会打开所选日志定义的“日志定义”功能页面,如下图所示

日志定义功能页的功能视图的屏幕截图。

关于全局日志记录字段列表

全局日志记录字段列表包含可添加到日志定义的所有日志记录字段。 若要查看全局日志记录字段列表,请在 IIS 管理器中的服务器、网站、目录或应用程序级别打开高级日志记录功能,然后在“操作”窗格中单击“编辑日志记录字段”
“操作”窗格的屏幕截图,其中突出显示了“编辑日志记录字段”选项。

此操作将打开“编辑日志记录字段”对话框,其中显示了 IIS 高级日志记录默认安装中包含的日志记录字段
“编辑日志记录字段”对话框的屏幕截图。

若要详细了解如何将自定义日志记录字段添加到全局日志记录字段列表,请参阅添加自定义日志记录字段

添加自定义日志记录字段

本部分介绍如何将自定义日志记录字段添加到全局日志记录字段列表。 在以下示例中,我们将使用自定义 HTTP 响应头 author 作为自定义日志记录字段。 此自定义响应头在对客户端的响应中返回网页作者的姓名。

若要将自定义日志记录字段添加到全局日志记录字段列表,请执行以下操作:

  1. 在 IIS 管理器中,在服务器、网站、虚拟目录或应用程序级别打开高级日志记录功能。
  2. 在“操作”窗格中,单击“编辑日志记录字段”打开“编辑日志记录字段”对话框。 该对话框显示默认情况下可用的日志记录字段。
  3. 在“编辑日志记录字段”对话框中,单击“添加字段”按钮
    “编辑日志记录字段”对话框的屏幕截图,其中突出显示了“添加字段”按钮。
  4. 在“添加日志记录字段”对话框中,指定自定义日志记录字段的设置和值
    “添加日志记录字段”对话框的屏幕截图。
  • 字段 ID。 输入一个易记名称(例如 Author),该名称将包含在日志定义中,并显示在全局日志记录字段列表中。
  • 源类型。 选择“响应头”
  • 源名称。 输入 author 作为要记录的 HTTP 响应。

添加日志定义

本部分介绍如何在新日志文件中使用我们在上一部分添加的自定义日志记录字段 Author。 为此,我们需要创建新的日志定义:

  1. 在 IIS 管理器中,在服务器、网站、虚拟目录或应用程序级别打开高级日志记录功能。

  2. 在“操作”窗格中,单击“添加日志定义”打开“日志定义”页面

  3. 在“日志定义”页面中,指定新日志定义的设置和值

    1. 基文件名。 生成的日志文件的文件名使用指定的基文件名和时间戳,格式为 Basefilename_timestamp.log。 可以使用环境变量作为基文件名,高级日志记录功能将扩展环境变量。 在此示例中,我们使用了 TestLog

    2. 已启用。 选中此复选框后,将启用新的日志定义。 可以通过清除相应的复选框来禁用它。 在此示例中,我们将其保留为启用状态。

    3. 发布实时事件。 此选项允许高级日志记录功能引发可由其他 IIS 模块使用的事件,以进行实时日志记录和分析。 这些事件包含所有数据,在将数据写入日志文件之前的那一刻引发。 在此示例中,我们将其保留为未选中状态。 有关实时日志记录的详细信息,请参阅 IIS 的高级日志记录 - 实时日志记录

    4. 日志文件滚动更新。 日志文件滚动更新选项指定生成新日志文件的频率。 在此示例中,我们选择“每日”作为默认的“计划”选项,该选项在协调世界时 (UTC) 每日午夜生成一个新的日志文件

    5. 选定的字段。 单击“选择字段”按钮打开“选择日志记录字段”对话框,可在其中选择要为此日志定义记录的字段,包括你在上一部分添加到全局日志记录字段列表中的自定义日志记录字段 Author。 若要添加自定义 Author 日志记录字段,请在列表中选择它。
      “选择日志记录字段”对话框的屏幕截图,其中显示了“请求标头”和“响应标头”部分。

      若要将其他日志记录字段添加到日志定义中,请通过单击相应名称旁边的复选框来选择其他日志记录字段。 完成后,单击“确定”

    6. (可选)指定日志记录字段写入日志文件的顺序,方法是在列表中选择日志记录字段名称,然后单击“移动”按钮之一更新其在列表中的位置
      “日志定义”屏幕的屏幕截图,其中突出显示了“所选字段”部分中的“移动第一步”、“上移”、“下移”和“移动最后一步”按钮。

    7. 筛选器。 借助 IIS 高级日志记录中的日志筛选,管理员可以仅收集感兴趣的网站流量信息,而不必捕获所有网站流量,然后筛选所有数据以找到他们所需的信息。 在此示例中,我们不会创建日志筛选器。 有关日志筛选的详细信息,请参阅 IIS 的高级日志记录 - 日志筛选

  4. 若要保存新的 TestLog 日志定义,请在“操作”窗格中单击“应用”

存储日志文件

访问服务器托管的网页时,你应会在创建的日志文件中看到记录的 Author,以及在上一部分选择的其他日志记录字段。 默认情况下,服务器和所有网站的日志文件存储在 %SystemDrive%\inetpub\logs\AdvancedLogs 中。 可以更改服务器和网站的“全局”日志目录,还可为服务器上的每个网站指定唯一的日志目录。

本部分包含以下过程:

指定服务器和网站的全局日志目录

  1. 在 IIS 管理器中,在服务器级别打开高级日志记录功能。
  2. 在“操作”窗格中,单击“编辑日志目录”
    “操作”窗格的屏幕截图,其中突出显示了“编辑日志目录”选项。
  3. 在“编辑日志目录”对话框中,更新日志目录路径信息
    “编辑日志目录”对话框的屏幕截图,其中突出显示了服务器日志目录路径信息。
  • 服务器日志目录。 指定服务器的日志文件目录。
  • 默认网站日志目录。 指定服务器上所有网站的默认日志文件目录。 若要更改特定网站的日志文件目录,请参阅以下过程

指定网站的日志目录

  1. 在 IIS 管理器中,在要更改其日志文件目录的网站级别打开高级日志记录功能。
  2. 在“操作”窗格中,单击“编辑日志目录”
    “操作”窗格的屏幕截图,其中突出显示了“编辑日志目录”选项。
  3. 在“编辑日志目录”对话框中,更新网站的日志目录路径信息
    “编辑日志目录”对话框的屏幕截图,其中显示了站点日志目录路径信息。
  • 网站日志目录。 指定网站的日志文件目录。

总结

在本演练中,我们回顾了高级日志记录功能,了解了如何将自定义日志记录字段添加到全局日志记录字段列表,以及如何使用它创建新的日志文件,并了解了如何指定日志文件的存储位置