【发布时间】:2013-11-12 12:41:42
【问题描述】:
我们的分析引擎读取 IIS 日志,我想知道查询字符串是否包含在默认 IIS7 设置中。
例如,如果用户请求http://mysite.com/page?to=otherpage,日志中是否会包含http://mysite.com/page?to=otherpage 或http://mysite.com/page?
【问题讨论】:
标签: logging iis-7 query-string
我们的分析引擎读取 IIS 日志,我想知道查询字符串是否包含在默认 IIS7 设置中。
例如,如果用户请求http://mysite.com/page?to=otherpage,日志中是否会包含http://mysite.com/page?to=otherpage 或http://mysite.com/page?
【问题讨论】:
标签: logging iis-7 query-string
在服务器或特定站点的日志记录设置中(我通常配置全局日志记录),如果您选择了URI Query (cs-uri-query) 日志记录字段,那么 IIS 将记录查询字符串:
您可以使用以下方法同时启用所有字段:
appcmd set config -section:sites -siteDefaults.logFile.logExtFileFlags:Date,Time,ClientIP,UserName,SiteName,ComputerName,ServerIP,Method,UriStem,UriQuery,HttpStatus,Win32Status,BytesSent,BytesRecv,TimeTaken,ServerPort,UserAgent,Cookie,Referer,ProtocolVersion,Host,HttpSubStatus
在您的日志文件中,您会看到两个字段:
cs-uri-stem - 这将是您网址的 /page 部分cs-uri-query - 表示查询字符串,例如to=otherpage&life=42。您不会看到问号,因为它已被剥离。如果 url 中不存在查询字符串值,那么您将在 cs-uri-query 字段中看到一个连字符 (-)。
至于默认值是什么...我一时想不起来了。这是因为我们使用一组模板和黄金图像构建我们的服务器,这些模板和黄金图像并不是真正普通的 IIS7 盒子,并且已经启用了所有日志记录字段。
不过,只要看看全局日志设置,您很快就会发现(假设自从服务器构建以来有人没有接触过这些设置)。
最后,全局日志记录设置将被您服务器上的所有站点继承,除非您在站点级别本地覆盖。
您可能还会发现我不久前给出的这个答案很有用,其中包含有关 IIS 日志文件的其他一些信息:
【讨论】: