日志 <log>

概述

<log> 元素指定 Internet Information Services (IIS) 7 的多个全局日志记录选项。 例如,centralLogFileMode 属性指定是启用站点级日志记录、集中式 W3C 日志记录还是集中式二进制日志记录

站点级日志记录为服务器上的每个站点创建单独的日志文件目录,其中每个文件夹仅包含该站点的日志文件。 通过集中式日志记录,可在由 <centralBinaryLogFile><centralW3CLogFile> 元素的 period 属性指定的时间段内为所有站点使用单个日志文件。 时间段可以是每天、每周、每月、每小时或最大文件大小。

注意

W3C 格式的日志文件是大多数日志分析实用工具可处理的基于文本的文件。 二进制日志文件使用专有存储格式,该格式需要使用能够处理采用该格式的日志文件的应用程序,例如 Microsoft 的 LogParser 实用工具。

兼容性

版本 说明
IIS 10.0 <log> 元素在 IIS 10.0 中未进行修改。
IIS 8.5 <log> 元素在 IIS 8.5 中未进行修改。
IIS 8.0 <log> 元素在 IIS 8.0 中未进行修改。
IIS 7.5 <log> 元素在 IIS 7.5 中未进行修改。
IIS 7.0 <log> 元素是在 IIS 7.0 中引入的。
IIS 6.0 <log> 元素替换以下 IIS 6.0 属性:
  • CentralBinaryLoggingEnabled
  • CentralW3CLoggingEnabled
  • LogInUTF8

安装

<log> 元素包含在 IIS 7 的默认安装中。

操作方式

如何为服务器启用集中式二进制日志记录

  1. 打开 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)管理器”
    • 如果使用的是 Windows Server 2008 或 Windows Server 2008 R2:

      • 在任务栏上,单击“开始”,指向“管理工具”,然后单击“Internet Information Services (IIS)管理器”
    • 如果使用的是 Windows Vista 或 Windows 7:

      • 在任务栏上,单击“开始”,然后单击“控制面板”
      • 双击“管理工具”,然后双击“Internet Information Services (IIS)管理器”
  2. 在“连接”窗格中,单击服务器名称

  3. 在服务器的“主页”窗格中,双击“日志记录”
    Screenshot of Logging selected in the SERVER Home pane.

  4. 在“日志记录”页上“一个日志文件/每”下的下拉列表中选择“服务器”,然后从“格式”下拉列表中选择“二进制”
    Screenshot of setting One log file per Server and Log File Format to Binary in the Logging pane.

  5. 在“操作”窗格中,单击“应用”

如何为服务器启用集中式 W3C 日志记录

  1. 打开 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)管理器”
    • 如果使用的是 Windows Server 2008 或 Windows Server 2008 R2:

      • 在任务栏上,单击“开始”,指向“管理工具”,然后单击“Internet Information Services (IIS)管理器”
    • 如果使用的是 Windows Vista 或 Windows 7:

      • 在任务栏上,单击“开始”,然后单击“控制面板”
      • 双击“管理工具”,然后双击“Internet Information Services (IIS)管理器”
  2. 在“连接”窗格中,单击服务器名称

  3. 在服务器的“主页”窗格中,双击“日志记录”
    Screenshot of the Logging icon selected in the SERVER Home pane.

  4. 在“日志记录”页上“一个日志文件/每”下的下拉列表中选择“服务器”,然后从“格式”下拉列表中选择“W3C”
    Screenshot of setting One log file per Server and Log File Format to W 3 C in the Logging pane.

  5. 在“操作”窗格中,单击“应用”

配置

特性

属性 说明
centralLogFileMode 可选枚举特性。

指定服务器的集中式日志模式。

centralLogFileMode 属性可以具有以下可能值之一。 默认为 Site
说明
Site 将所有站点配置为使用站点日志记录,而不是集中式日志记录。 这是默认设置。

数值为 0
CentralBinary 为 Web 服务器上的所有网站创建一个日志文件。 日志文件中的数据是基于二进制的无格式数据,不可自定义。

数值为 1
CentralW3C 将 Web 服务器上所有站点的请求记录到基于文本的可自定义 ASCII 格式的单个集中式日志文件中。

数值为 2
logInUTF8 可选布尔属性。

指定 IIS 是否应以 UCS 传输格式 8 (UTF-8) 记录所有字符串。 此设置应用于服务器范围内的所有文本模式日志记录。

默认值为 true

子元素

元素 说明
centralBinaryLogFile 可选元素。

指定服务器上所有站点的集中式二进制日志设置。
centralW3CLogFile 可选元素。

指定服务器上所有站点的集中式 W3C 日志设置。

配置示例

以下配置示例指定 IIS 将使用站点级日志记录。

<log centralLogFileMode="Site">
   <centralBinaryLogFile enabled="true" directory="%SystemDrive%\inetpub\logs\LogFiles" />
   <centralW3CLogFile enabled="true" directory="%SystemDrive%\inetpub\logs\LogFiles" />
</log>

以下配置示例指定 IIS 将使用集中式二进制日志记录,并配置每天进行二进制日志文件轮换。

<log centralLogFileMode="CentralBinary">
   <centralBinaryLogFile enabled="true" directory="%SystemDrive%\inetpub\logs\LogFiles" period="Daily" />
   <centralW3CLogFile enabled="true" directory="%SystemDrive%\inetpub\logs\LogFiles" />
</log>

以下配置示例指定 IIS 使用集中式 W3C 日志记录且配置每日 W3C 日志文件轮换。

<log centralLogFileMode="CentralW3C">
   <centralBinaryLogFile enabled="true" directory="%SystemDrive%\inetpub\logs\LogFiles" />
   <centralW3CLogFile enabled="true" directory="%SystemDrive%\inetpub\logs\LogFiles" period="Daily" />
</log>

代码示例

以下代码示例指定 IIS 将使用集中式二进制日志记录,并配置每天进行二进制日志文件轮换。

AppCmd.exe

appcmd.exe set config -section:system.applicationHost/log /centralLogFileMode:"CentralBinary" /commit:apphost

appcmd.exe set config -section:system.applicationHost/log /centralBinaryLogFile.period:"Daily" /commit:apphost

注意

使用 AppCmd.exe 配置这些设置时,必须确保将 commit 参数设置为 apphost。 这会将配置设置提交到 ApplicationHost.config 文件中的相应位置部分。

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 logSection = config.GetSection("system.applicationHost/log");
         logSection["centralLogFileMode"] = @"CentralBinary";
         ConfigurationElement centralBinaryLogFileElement = logSection.GetChildElement("centralBinaryLogFile");
         centralBinaryLogFileElement["period"] = @"Daily";

         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 logSection As ConfigurationSection = config.GetSection("system.applicationHost/log")
      logSection("centralLogFileMode") = "CentralBinary"
      Dim centralBinaryLogFileElement As ConfigurationElement = logSection.GetChildElement("centralBinaryLogFile")
      centralBinaryLogFileElement("period") = "Daily"

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var logSection = adminManager.GetAdminSection("system.applicationHost/log", "MACHINE/WEBROOT/APPHOST");
logSection.Properties.Item("centralLogFileMode").Value = "CentralBinary";
var centralBinaryLogFileElement = logSection.ChildElements.Item("centralBinaryLogFile");
centralBinaryLogFileElement.Properties.Item("period").Value = "Daily";

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set logSection = adminManager.GetAdminSection("system.applicationHost/log", "MACHINE/WEBROOT/APPHOST")
logSection.Properties.Item("centralLogFileMode").Value = "CentralBinary"
Set centralBinaryLogFileElement = logSection.ChildElements.Item("centralBinaryLogFile")
centralBinaryLogFileElement.Properties.Item("period").Value = "Daily"

adminManager.CommitChanges()

以下代码示例指定 IIS 使用集中式 W3C 日志记录且配置每日 W3C 日志文件轮换。

AppCmd.exe

appcmd.exe set config -section:system.applicationHost/log /centralLogFileMode:"CentralW3C" /commit:apphost

appcmd.exe set config -section:system.applicationHost/log /centralW3CLogFile.period:"Daily" /commit:apphost

注意

使用 AppCmd.exe 配置这些设置时,必须确保将 commit 参数设置为 apphost。 这会将配置设置提交到 ApplicationHost.config 文件中的相应位置部分。

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 logSection = config.GetSection("system.applicationHost/log");
         logSection["centralLogFileMode"] = @"CentralW3C";
         ConfigurationElement centralW3CLogFileElement = logSection.GetChildElement("centralW3CLogFile");
         centralW3CLogFileElement["period"] = @"Daily";

         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 logSection As ConfigurationSection = config.GetSection("system.applicationHost/log")
      logSection("centralLogFileMode") = "CentralW3C"
      Dim centralW3CLogFileElement As ConfigurationElement = logSection.GetChildElement("centralW3CLogFile")
      centralW3CLogFileElement("period") = "Daily"

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var logSection = adminManager.GetAdminSection("system.applicationHost/log", "MACHINE/WEBROOT/APPHOST");
logSection.Properties.Item("centralLogFileMode").Value = "CentralW3C";
var centralW3CLogFileElement = logSection.ChildElements.Item("centralW3CLogFile");
centralW3CLogFileElement.Properties.Item("period").Value = "Daily";

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set logSection = adminManager.GetAdminSection("system.applicationHost/log", "MACHINE/WEBROOT/APPHOST")
logSection.Properties.Item("centralLogFileMode").Value = "CentralW3C"
Set centralW3CLogFileElement = logSection.ChildElements.Item("centralW3CLogFile")
centralW3CLogFileElement.Properties.Item("period").Value = "Daily"

adminManager.CommitChanges()