更改 IIS HTTP 错误日志的格式

更改 IIS HTTP 错误日志的格式

HTTP.sys 默认创建错误日志C:\Windows\System32\LogFiles\HTTPERR 下的文件。

是否可以更改这些日志文件的格式以包含其他字段(包括 cs-host 和 cs-uri-query)?

答案1

微软的这份名单有点过时了,因为它没有包括最近推出的“流标识“字段存在于Windows Server 2016中,但它绝对可以帮助您指定所需的字段。 https://docs.microsoft.com/en-us/windows/win32/http/error-logging-in-windows-server-2003-sp1

要快速求和所有十六进制值,只需按原样在 Google 中输入它们(在此示例中,我选择包含所有字段,包括streamidWindows Server 2016 及以上版本可用的新字段):

0x00000001 + 0x00000002 + 0x00000004 + 0x00000020 + 0x00000040 + 0x00000080 + 0x00000400 + 0x00001000 + 0x00002000 + 0x00004000 + 0x00008000 + 0x00010000 + 0x00020000 + 0x00040000 + 0x00080000 + 0x00100000 + 0x00400000 + 0x00800000 + 0x01000000 + 0x02000000 + 0x04000000 + 0x08000000

那将会回归0xFDFF4E7

只需创建然后执行包含以下内容的新 .REG 文件:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters]

; WIN 2016-2019-2022
; LOG THE FOLLOWING #Fields: date time s-computername c-ip c-port s-ip s-port cs-version cs-method cs-uri cs(User-Agent) cs(Cookie) cs(Referer) cs-host sc-status sc-bytes cs-bytes time-taken s-siteid s-reason s-queuename streamid
"ErrorLoggingFields"=dword:0fdff4e7

答案2

扩展之前的答案,您需要为所选字段的以下注册表项分配一个值。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters] "ErrorLoggingFields"=dword:0fc884c7

基本上,该值是以下列表中您想要包含的所有字段的位值的总和。

日志字段 默认记录 位值
日期 是的 0x00000001
时间 是的 0x00000002
客户端 IP 地址 是的 0x00000004
服务器计算机名 0x00000020
服务器的IP地址 是的 0x00000040
方法 是的 0x00000080
协议状态 是的 0x00000400
SC 字节 0x00001000
CS 字节 0x00002000
所用的时间 0x00004000
服务器端口 是的 0x00008000
用户代理 0x00010000
曲奇饼 0x00020000
引荐来源 0x00040000
协议版本 是的 0x00080000
主持人 0x00100000
客户端端口 是的 0x00400000
URI 是的 0x00800000
站点编号 是的 0x01000000
原因短语 是的 0x02000000
队列名称 是的 0x04000000
流 ID 是的 0x08000000

答案3

这是一个解决方法:

  1. 按照 HTTPErr 日志文件的列顺序创建一个头文件,并将其保存为 - header.txt

  2. 使用以下格式进行 SQL 查询

    LogParser.exe“从 C:\temp\HTTPLogs*.log 中选择 sc-status、s-reason、s-queuename、count(*),按 sc-status、s-reason、s-queuename 分组,按 count(*) 降序排序”-i:TSV -iseparator:space -iHeaderFile C:\temp\HTTPLogs\header.txt

相关内容