http.h) (HTTP_LOGGING_INFO 结构

HTTP_LOGGING_INFO结构用于在 URL 组或服务器会话上启用服务器端日志记录。

在 URL 组或服务器会话上设置或查询 HttpServerLoggingProperty 时,必须使用此结构。

语法

typedef struct _HTTP_LOGGING_INFO {
  HTTP_PROPERTY_FLAGS        Flags;
  ULONG                      LoggingFlags;
  PCWSTR                     SoftwareName;
  USHORT                     SoftwareNameLength;
  USHORT                     DirectoryNameLength;
  PCWSTR                     DirectoryName;
  HTTP_LOGGING_TYPE          Format;
  ULONG                      Fields;
  PVOID                      pExtFields;
  USHORT                     NumOfExtFields;
  USHORT                     MaxRecordSize;
  HTTP_LOGGING_ROLLOVER_TYPE RolloverType;
  ULONG                      RolloverSize;
  PSECURITY_DESCRIPTOR       pSecurityDescriptor;
} HTTP_LOGGING_INFO, *PHTTP_LOGGING_INFO;

成员

Flags

HTTP_PROPERTY_FLAGS 结构,指定属性是否存在。

LoggingFlags

可选的日志记录标志更改默认日志记录行为。

这些值可以是以下 一个或多个HTTP_LOGGING_FLAG 值:

含义
HTTP_LOGGING_FLAG_LOCAL_TIME_ROLLOVER
将日志文件滚动更新时间更改为本地时间。 默认情况下,日志文件滚动更新基于 GMT。
HTTP_LOGGING_FLAG_USE_UTF8_CONVERSION
默认情况下,unicode 日志记录字段使用系统本地代码页转换为多字节。 如果设置了此标志,则改用 UTF8 转换。
HTTP_LOGGING_FLAG_LOG_ERRORS_ONLY
“仅日志错误”标志仅启用日志记录错误。 默认情况下,会记录错误和成功请求。

HTTP_LOGGING_FLAG_LOG_ERRORS_ONLYHTTP_LOGGING_FLAG_LOG_SUCCESS_ONLY标志用于执行选择性日志记录。 一次只能设置其中一个标志;它们是互斥的。

HTTP_LOGGING_FLAG_LOG_SUCCESS_ONLY
“仅日志成功”标志仅允许记录成功的请求。 默认情况下,会记录错误和成功请求。

HTTP_LOGGING_FLAG_LOG_ERRORS_ONLYHTTP_LOGGING_FLAG_LOG_SUCCESS_ONLY标志用于执行选择性日志记录。 一次只能设置其中一个标志;它们是互斥的。

SoftwareName

W3C 类型日志记录中使用的可选软件名称字符串。 此名称不用于其他类型的日志记录。 如果此参数为 NULL,则 HTTP 服务器 API 会记录默认字符串。

SoftwareNameLength

软件名称的长度(以字节为单位)。 长度不能大于 MAX_PATH

如果 SoftwareName 成员为 NULL,则此长度必须为零。

DirectoryNameLength

目录名称的长度(以字节为单位)。 长度不能大于 424 个字节。

DirectoryName

在其中创建日志文件的日志记录目录。 目录字符串必须是包含驱动器号的完全限定路径。

应用程序可以使用远程计算机的 UNC 路径来启用 UNC 日志记录。

Format

指定以下日志文件格式之一的 HTTP_LOGGING_TYPE 枚举的成员。

格式 含义
HttpLoggingTypeW3C
日志格式为 W3C 样式扩展日志记录。 使用此格式,应用程序可以选取要记录的日志字段的组合。 在 URL 组上设置 W3C 日志记录时,日志记录类似于 IIS6 站点日志记录。 在服务器会话上设置 W3C 日志记录时,此日志记录功能用作所有 URL 组的集中日志记录。
HttpLoggingTypeIIS
日志格式为 IIS6/5 样式日志记录。 此格式具有固定的字段定义;应用程序无法选择记录的字段。 此格式不能用于记录服务器会话。
HttpLoggingTypeNCSA
日志格式为 NCSA 样式日志记录。 此格式具有固定的字段定义;应用程序无法选择记录的字段。 此格式不能用于记录服务器会话。
HttpLoggingTypeRaw
日志格式是集中式二进制日志记录。 此格式具有固定的字段定义;应用程序无法选择记录的字段。 此格式不能用于记录 URL 组。

Fields

格式设置为 W3C 时记录的字段。 这些值可以是一个或多个 HTTP_LOG_FIELD_常量 值。

当日志记录格式为 W3C 为 时,应用程序必须指定日志字段,否则不会记录任何字段。

pExtFields

保留。 将 设置为 0 (零) 或 NULL

NumOfExtFields

保留。 将 设置为 0 (零) 或 NULL

MaxRecordSize

保留。 将 设置为 0 (零) 或 NULL

RolloverType

HTTP_LOGGING_ROLLOVER_TYPE枚举的下列成员之一,用于指定日志文件滚动更新的条件。

滚动更新类型 含义
HttpLoggingRolloverSize
日志文件在达到或超过指定大小时滚动更新。
HttpLoggingRolloverDaily
日志文件每天都会滚动更新。
HttpLoggingRolloverWeekly
日志文件每周滚动更新一次。
HttpLoggingRolloverMonthly
日志文件每月滚动更新一次。
HttpLoggingRolloverHourly
日志文件每小时滚动更新一次。

RolloverSize

滚动更新日志文件后的最大大小(以字节为单位)。 值 HTTP_LIMIT_INFINITE 表示大小不受限制。 最小值不能小于 HTTP_MIN_ALLOWED_LOG_FILE_ROLLOVER_SIZE (1024 * 1024) 。

此字段仅用于 HttpLoggingRolloverSize 滚动更新类型,对于所有其他类型,应设置为零。

当滚动更新类型为 HttpLoggingRolloverSize 时,应用程序必须指定日志文件的最大大小。

pSecurityDescriptor

应用于日志文件目录和所有子目录的安全描述符。 如果此成员为 NULL,则使用系统默认 ACL 或从父目录继承 ACL。

注解

HttpServerLoggingProperty 属性设置以下四种类型的服务器端日志记录之一:HttpLoggingTypeW3C、HttpLoggingTypeIIS、HttpLoggingTypeNCSA 或 HttpLoggingTypeRaw。 在服务器会话上设置此属性时,它充当该服务器会话下所有 URL 组的集中式日志记录形式。 路由到服务器会话下某个 URL 组的请求记录在一个集中式日志文件中。 日志文件的配置参数在调用 HttpSetServerSessionPropertyHTTP_LOGGING_INFO 结构中传递。

在 URL 组上设置此属性时,仅对路由到 URL 组的请求执行日志记录。 日志文件是在请求到达 URL 组或服务器会话时创建的,在配置日志记录时不会创建日志文件。

应用程序必须确保 DirectoryName 成员中指定的目录是唯一的。

日志文件名称基于指定的滚动更新类型。 下表显示了日志文件的命名约定。

格式 滚动更新类型 文件名模式
Microsoft IIS 日志格式 大小 inetsvnn.log
每小时 inyymmddhh.log
每天 inyymmdd.log
每周 inyymmww.log
每月 inyymm.log
NCSA 通用日志文件格式 大小 ncsann.log
每小时 ncyymmddhh.log
每天 ncyymmdd.log
每周 ncyymmww.log
每月 ncyymm.log
W3C 扩展日志文件格式 大小 extendnn.log
每小时 exyymmddhh.log
每天 exyymmdd.log
每周 exyymmww.log
每月 exyymm.log
 

表中的字母 yy、mm、ww、dd、hh 和 nn 表示以下数字:

  • yy:年份的两位数表示形式。
  • mm:月份的两位数表示形式。
  • ww:一周的两位数表示形式。
  • dd:一天的两位数表示形式。
  • hh:以 24 小时表示法表示的小时数的两位数表示形式。
  • nn:数字序列的两位数表示形式。

请注意,在 HTTP 版本 2.0 API 中, HttpSendHttpResponseHttpSendResponseEntityBody 已经过修订,允许应用程序传递 HTTP_LOG_FIELDS_DATA 结构,以便可以记录响应。 在服务器会话或 URL 组上设置 HttpServerLoggingProperty 属性并不意味着记录 HTTP 响应。 除非对 HttpSendResponseEntityBody 和 HttpSendHttpResponse 的调用包含可选的 HTTP_LOG_FIELDS_DATA 结构,否则不会对 URL 组或服务器会话进行日志记录。 有关详细信息,请参阅 HTTP_LOG_FIELDS_DATA 主题。

有关日志文件格式的信息,请参阅 IIS 日志文件格式 主题。

要求

   
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
标头 http.h

另请参阅

HTTP 服务器 API 版本 2.0 结构

HTTP_LOGGING_FLAG_常量

HTTP_LOGGING_ROLLOVER_TYPE

HTTP_LOGGING_TYPE

HTTP_LOG_FIELD_常量

HTTP_SERVER_PROPERTY

HttpCloseRequestQueue

HttpCreateRequestQueue

HttpSetRequestQueueProperty

HttpShutdownRequestQueue