可以配置网站或 FTP 站点记录由用户和服务器活动生成的日志项目。IIS 日志数据可以帮助控制对内容的访问,确定内容受欢迎的程度,计划安全要求和排除潜在的网站或 FTP 站点问题。记录 IIS 站点活动不应当与由 Microsoft Windows Server 2003 家族成员执行的事件记录相混淆,后者可以通过使用“事件查看器”来查看。IIS 中的日志记录功能更加广泛。
注意 如果日志文件目录或文件的所有者不在 Local Administrators 组中,则 HTTP 协议堆栈 (HTTP.sys) 将错误发布到“NT 事件”日志中,指出目录或文件的所有者不在 Local Administrators 组中,并且该站点的日志记录将被挂起,直到所有者被添加到 Local Administrators 组中,或者现有的目录或文件被删除。可以通过允许 HTTP.sys 创建日志文件目录和文件来避免发生该错误。
本主题包括以下部分:
可以为单个网站或 FTP 站点选择日志格式。如果站点已启用日志记录,可以为该站点的单独目录禁用或启用日志。要为站点或目录启用或禁用日志记录,请参阅启用日志记录。由 IIS 创建的日志可以在文本编辑器中阅读,但是通常将文件装入一个报告生成软件工具中。ODBC 日志记录到一个可以用来生成报告的数据库中。
不同的日志格式根据日志中所列的时间使用不同的时区。W3C 扩展格式使用协调通用时间 (UTC),它与格林威治标准时间 (GMT) 基本相同。其他的格式使用当地时间。在日志文件中列出的时间反映了服务器用来处理请求和响应的时间,但是不反映到客户端的网络传输时间或客户端处理时间。
当启用了安全套接字层 (SSL) 并且在服务器和客户机之间交换日志记录字节时,IIS 6.0 将记录解密的字节数。但是,IIS 5.1 记录的是加密的字节数。
IIS 6.0 支持以 UTF-8 形式写入网站的日志文件,而不是只采用 ASCII(或本地代码页)。IIS 6.0 不支持对 FTP 站点进行 UTF-8 记录。当(通过“本地计算机”属性页)启用时,IIS 服务器上的所有网站开始以 UTF-8 形式记录。如果未选择 UTF-8,则 IIS 使用本地字符集记录。
对于除 ODBC 日志记录之外的所有日志格式,将按照下面的创新技术记录“所用时间”(以毫秒为单位):
“所用时间”不反映通过网络的时间。对站点的第一个请求比其他类似/相同请求所花的时间稍长一些,这是由于 HTTP.sys 将日志文件与第一个请求一起打开。
可使用下列格式在 Web 服务器上记录用户活动:
W3C 扩展日志文件格式、IIS 日志文件格式和 NCSA 公用日志文件格式都是 ASCII 文本格式(除非为网站启用了 UTF-8)。W3C 扩展和 NCSA 公用格式用四位年份的格式来记录日志数据。IIS 格式对于 1999 年和以前的年份使用两位年份格式,对于 1999 年以后的年份使用四位年份格式。对于 NCSA 和 IIS 日志文件格式,为每个请求记录的数据是固定的。但是,W3C 扩展允许您选择要为每个请求记录的属性。
W3C 扩展格式是一个包含多个不同属性、可自定义的 ASCII 格式。可以记录对您来说重要的属性,同时通过省略不需要的属性字段来限制日志文件的大小。属性以空格分开。时间以 UTC 形式记录。有关自定义该格式的信息,请参阅自定义 W3C 扩展日志记录。有关 W3C 扩展格式规范的详细信息,请参阅万维网联合会网站。
以下示例显示了使用下列属性的文件语句:时间、客户端 IP 地址、方法、URI 资源、协议状态和协议版本。
#Software: Internet Information Services 6.0 #Version: 1.0 #Date: 2001-05-02 17:42:15 #Fields: time c-ip cs-method cs-uri-stem sc-status cs-version 17:42:15 172.16.255.255 GET /default.htm 200 HTTP/1.0
上面所示的项目表明:2001 年 5 月 2 日下午 5:42 (UTC),HTTP 版本为 1.0、IP 地址为 172.16.255.255 的用户针对 /Default.htm 文件发出了 HTTP GET 命令。该请求正确无误地返回。#Date: 属性字段表明了第一个日志项目建立的时间,也就是创建日志的时间。#Version: 属性字段指出使用的是 W3C 扩展日志记录格式。
可以选择任何属性,但某些属性可能没有可用于某些请求的信息。对于那些选中了但其中没有信息的属性,连字符 (-) 作为占位符出现在日志文件的属性字段中。
IIS 格式是固定的(不能自定义的) ASCII 格式。IIS 格式比 NCSA 公用格式记录的信息多。IIS 格式包括一些基本项目,如用户的 IP 地址、用户名、请求日期和时间、服务状态码和接收的字节数。另外,IIS 格式还包括详细的项目,如所用时间、发送的字节数、动作(例如,GET 命令执行的下载)和目标文件。这些项目用逗号分开,使得格式比使用空格作为分隔符的其他 ASCII 格式更易于阅读。时间记录为本地时间。
当在文本编辑器中打开 IIS 格式的文件时,项目与下面的示例相似:
192.168.114.201, -, 03/20/01, 7:55:20, W3SVC2, SALES1, 172.21.13.45, 4502, 163, 3223, 200, 0, GET, /DeptLogo.gif, -,
172.16.255.255, anonymous, 03/20/01, 23:58:11, MSFTPSVC, SALES1, 172.16.255.255, 60, 275, 0, 0, 0, PASS, /Intro.htm, -,
上面所示的项目将在下面的表中加以说明。每个表的顶行来自第二个网站实例(以 W3SVC2 形式出现在“服务”下面),底行来自第一个 FTP 站点实例(以 MSFTPSVC1 形式出现在“服务”下面)。由于页宽所限,该示例出现在三个表中。
用户的 IP 地址 | 用户名称 | 日期 | 时间 | 服务和实例 | 计算机名 |
---|---|---|---|---|---|
192.168.114.201 |
- |
03/20/01 |
7:55:20 |
W3SVC2 |
SALES1 |
172.16.255.255 |
匿名 |
03/20/01 |
23:58:11 |
MSFTPSVC1 |
SALES1 |
服务器的 IP 地址 | 所用时间 | 发送的字节 | 接收的字节 | 服务状态码 | Windows 状态码 |
---|---|---|---|---|---|
172.21.13.45 |
4502 |
163 |
3223 |
200 |
0 |
172.16.255.255, |
60 |
275 |
0 |
0 |
0 |
请求类型 | 操作目标 | 参数 |
---|---|---|
GET |
/DeptLogo.gif |
- |
[376] PASS |
/Intro.htm |
- |
在上面的示例中,第一个项目表明:2001 年 3 月 20 日上午 7:55,IP 地址为 192.168.114.201 的匿名用户发出一条 HTTP GET 命令,从 IP 地址为 172.21.13.45、名为 SALES1 的服务器请求图像文件 /DeptLogo.gif。163 字节的 HTTP 请求有 4502 毫秒(4.5 秒)的处理时间来完成,并将 3223 个字节的数据毫无错误地返回给匿名用户。
在日志文件中,所有属性字段都以逗号 (,) 结束。如果某个属性值无效,则连字符 (-) 起占位符的作用。
(美国)国家超级计算技术应用中心 (NCSA) 公用格式是一种固定的(不能自定义的)ASCII 格式,可用于网站但不能用于 FTP 站点。NCSA 公用格式记录了关于用户请求的基本信息,如远程主机名、用户名、日期、时间、请求类型、HTTP 状态码和服务器发送的字节数。项目之间用空格分开;时间记录为本地时间。
当在文本编辑器中打开 NCSA 公用格式文件时,项目与下面的示例相似:
172.21.13.45 - Microsoft\fred [08/Apr/2001:17:39:04 -0800] "GET /scripts/iisadmin/ism.dll?http/serv HTTP/1.0" 200 3401
注意 在前面的项目中,第二个属性字段(显示用户的远程登录名)是空的,它由 IP 地址 172.21.13.45 后面的连字符表示。
以上示例的项目在下面的表中说明。由于页宽所限,该示例显示在两个表中。
远程主机名 | 远程登录名称 | 用户名称 | 日期 | 时间和 GMT 时差 |
---|---|---|---|---|
172.21.13.45 |
- |
Microsoft\fred |
08/Apr/2001 |
17:39:10 -0800 |
请求/版本 | 服务状态码 | 传送的字节 |
---|---|---|
GET /scripts/iisadmin/ism.dll?http/serv HTTP/1.0 |
200 |
3401 |
上面的项目表明:Microsoft 域中 IP 地址为 172.21.13.45、名为 Fred 的用户在 2001 年 4 月 8 日下午 5:39 分发出一条 HTTP GET 命令(即,下载一个文件)。该请求将 3401 个字节的数据正确无误地返回给名为 Fred 的用户。
ODBC 日志记录格式是对符合开放式数据库连接 (ODBC) 的数据库(Microsoft Access 或 Microsoft SQL Server™)中一组固定的数据属性的记录。记录的某些项目中包含有用户的 IP 地址、用户名、请求日期和时间(记录为本地时间)、HTTP 状态码、接收字节、发送字节、执行的操作(例如,GET 命令执行的下载)和目标(例如,下载的文件)。对于 ODBC 日志记录,必须指定要登录的数据库,并且设置数据库接收数据。
当启用 ODBC 日志记录时,IIS 会禁用内核模式缓存。因此,执行 ODBC 日志记录可能会降低服务器的总体性能。
要点 出于安全方面的考虑,请不要使用 SQL SA 帐户进行 ODBC 日志记录。如果恶意用户能访问工作进程,他们会使用 SA 帐户访问 SQL 服务器。相反,请删除 SQL SA 帐户,并创建一个具有最少的必需权限的新帐户。有关详细信息,请参阅访问控制并查阅 SQL 帮助。
使用 ODBC 日志记录
属性名称 | 属性类型 |
---|---|
ClientHost | varchar(255) |
Username | varchar(255) |
LogTime | datetime |
Service | varchar(255) |
Machine | varchar(255) |
ServerIP | varchar(50) |
ProcessingTime | int |
BytesRecvd | int |
BytesSent | int |
ServiceStatus | int |
Win32Status | int |
Operation | varchar(255) |
Target | varchar(255) |
Parameters | varchar(255) |
集中的二进制日志记录是多个网站向单个日志文件中写入不带格式的二进制日志数据的过程。每个运行 IIS 的 Web 服务器都为该服务器上的所有站点创建了一个日志文件。集中的二进制日志记录可节省宝贵的内存资源。根据您的配置,利用集中的二进制日志记录可以大大提高性能和可伸缩性。有关详细信息,请参阅集中的二进制日志记录。
当用户访问正在运行 IIS 的服务器时,IIS 会记录该信息。根据站点的通信量,日志文件达到一定的大小(或数量)后,会开始消耗宝贵的内存资源和 CPU 周期。您可能需要在收集详细数据和限制文件在可管理的大小和数目的范围之间作出平衡。如果打算将数千个网站放在一台运行 IIS、具有大量的通信和磁盘写入操作的 Web 服务器上,最好使用集中的二进制日志记录以节省服务器资源。
也可以通过自定义 W3C 扩展日志记录以便只收集所需信息来节省服务器资源。有关详细信息,请参阅自定义 W3C 扩展日志记录。
还可以考虑通过更改日志文件的创建频率来限制日志大小。有关详细信息,请参阅保存日志文件。
日志文件仅仅是 ASCII(文本)文件。如果发现已经创建了许多小文件而希望使用大文件时,可以象对其他 ASCII 文件一样,将这些文件合并。有关使用 copy 命令将文件合并的信息,请在命令提示符下键入 copy /?。
如果 IIS 尝试将日志项目添加到文件时服务器磁盘空间已满,IIS 日志记录将关闭。同时,事件将记录到 Windows 事件查看器应用程序日志中。当有可用的磁盘空间时,将继续进行 IIS 日志记录,并在 Windows 事件查看器应用程序日志中记录该信息。
日志文件名使用前几位字母来代表日志记录格式,而其余的数字则代表时间范围或日志的顺序。下表提供了更多的信息。斜体字代表数字:
格式 | 新日志标准 | 文件名格式 |
---|---|---|
IIS 日志格式 | 按文件大小 | inetsv nn.log |
每小时 | in yymmddhh.log | |
每天 | in yymmdd.log | |
每周 | in yymmww.log | |
每月 | in yymm.log | |
NCSA 公用日志文件格式 | 按文件大小 | ncsa nn.log |
每小时 | nc yymmddhh.log | |
每天 | nc yymmdd.log | |
每周 | nc yymmww.log | |
每月 | nc yymm.log | |
W3C 扩展日志文件格式 | 按文件大小 | extend nn.log |
每小时 | ex yymmddhh.log | |
每天 | ex yymmdd.log | |
每周 | ex yymmww.log | |
每月 | ex yymm.log | |
集中的二进制日志文件格式 | ||
每小时 | raw yymmddhh.ibl | |
每天 | raw yymmdd.ibl | |
每周 | raw yymmww.ibl | |
每月 | raw yymm.ibl |
注意 当启用时,IIS 创建一个扩展名为 .ibl 的集中的二进制日志文件,其中 .ibl 是 Internet 二进制日志的缩写。这个新文件扩展名确保文本工具不将它读作 .log 文件扩展名并尝试打开二进制日志文件。