集中式 W3C 日志文件 <centralW3CLogFile>

概述

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

注意

需要将父元素 <log>centralLogFileMode 特性设置为 CentralW3C,以使 <centralW3CLogFile> 元素上的特性生效。 如果 <log> 元素的 centralLogFileMode 特性设置为 CentralBinarySite,将忽略 <centralW3CLogFile> 元素上的特性。

注意

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

兼容性

版本 说明
IIS 10.0 <centralW3CLogFile> 元素在 IIS 10.0 中未进行修改。
IIS 8.5 <centralW3CLogFile> 元素在 IIS 8.5 中未进行修改。
IIS 8.0 <centralW3CLogFile> 元素在 IIS 8.0 中未进行修改。
IIS 7.5 <centralW3CLogFile> 元素在 IIS 7.5 中未进行修改。
IIS 7.0 IIS 7.0 中引入了 <log> 元素的 <centralW3CLogFile> 元素。
IIS 6.0 <log> 元素替换了 IIS 6.0 CentralW3CLoggingEnabled 标志。

安装

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

操作方式

如何为服务器启用集中式 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 信息服务(IIS)管理器”。
    • 如果使用的是 Windows Server 2008 或 Windows Server 2008 R2:

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

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

  3. 在服务器的“主页”窗格中,双击“日志记录”。
    Screenshot of the Logging icon being highlighted.

  4. 在“日志记录”页上“一个日志文件/每”下的下拉列表中选择“服务器”,然后从“格式”下拉列表中选择 W3C。
    Screenshot of the Logging screen with the Format drop-down being highlighted.

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

配置

特性

属性 说明
directory 可选的字符串属性。

指定写入日志条目的目录。

默认值为 %SystemDrive%\inetpub\logs\LogFiles
enabled 可选布尔属性。

指定是否启用集中式 W3C 日志记录。

默认值为 true
localTimeRollover 可选布尔属性。

指定是基于本地时间还是协调世界时 (UTC) 创建新的日志文件。 True 值表示新日志文件基于本地时间;false 表示基于 UTC。

默认值为 false
logExtFileFlags 可选标志属性。

指定要记录的字段。

logExtFileFlags 特性可具有以下值中的一个或多个。 默认值为以下值:DateTimeClientIPUserNameSiteNameServerIPMethodUriStemUriQueryHttpStatusTimeTakenWin32StatusServerPortUserAgentHttpSubStatus
说明
Date 活动的发生日期。

数值为 1
Time 活动发生的时间,采用协调世界时 (UTC)。

数值为 2
ClientIP 发出请求的客户端的 IP 地址。

数值为 4
UserName 访问服务器的经过身份验证的用户的名称。 匿名用户会以连字符表示。

数值为 8
SiteName 在其上生成日志文件条目的服务器的名称。

数值为 16
ComputerName 发出请求的计算机的名称。

数值为 32
ServerIP 在其上生成日志文件条目的服务器的 IP 地址。

数值为 64
Method 请求的操作,例如 GET 方法。

数值为 128
UriStem 操作的目标,例如 Default.htm。

数值为 256
UriQuery 客户端尝试执行的查询(如果有)。 只有动态页面才需要统一资源标识符 (URI) 查询。

数值为 512
HttpStatus HTTP 状态代码。

数值为 1024
Win32Status Windows 状态代码。

数值为 2048
BytesSent 服务器发送的字节数。

数值为 4096
BytesRecv 服务器接收的字节数。

数值为 8192
TimeTaken 操作所用时间(毫秒)。

数值为 16384
ServerPort 为服务配置的服务器端口号。

数值为 32768
UserAgent 客户端使用的浏览器类型。

数值为 65536
Cookie 发送或接收的 Cookie 的内容(如果发送或接收了 Cookie)。

数值为 131072
Referer 用户上次访问的站点。 此站点提供指向当前站点的链接。

数值为 262144
ProtocolVersion 客户端使用的协议版本。

数值为 524288
Host 如果有主机头,则为主机头名称。

数值为 1048576
HttpSubStatus 子状态错误代码。

数值为 2097152
period 可选枚举特性。

指定当前日志文件关闭的频率以及启动新日志文件的频率。

period 特性可为以下值之一。

默认为 Daily
说明
MaxSize 每当日志文件达到 truncateSize 特性指定的大小时,启动新日志文件。

数值为 0
Daily 每天启动新日志文件。

数值为 1
Weekly 每周启动一次新日志文件。

数值为 2
Monthly 每月启动一次新日志文件。

数值为 3
Hourly 每小时启动一个新日志文件。

数值为 4
truncateSize 可选 int64 特性。

指定日志文件内容要截断的大小(字节)。 当 period 特性值为 maxSize时,必须设置此属性。 大小须介于 1048576 (1 MB) 和 4294967295 (4 GB)之间。

默认值为 20971520 (20 MB)。

子元素

无。

配置示例

以下配置示例指定 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 使用集中式 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()