记录解析器不将“”视为一个字段

时间:2011-12-09 15:04:01

标签: iis user-agent logparser iis-logs

我试图使用LogParser 2.2解析IIS日志文件,但是当涉及到用户代理时我遇到了问题,因为它看到了以下用户代理中的空格并认为它是一个新字段......

"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2"

它并不关心字符串周围的“”,任何人都知道它会把它作为一个字段之间的任何东西对待吗?

感谢,

P.S。这来自IIS高级日志记录模块生成的日志。

1 个答案:

答案 0 :(得分:0)

那是因为w3c标准不包括使用空格,会发生什么是日志解析器会看到空白并假设它是一个新字段,有或没有引号。从以下页面

  

“条目由与单个HTTP相关的一系列字段组成   交易。字段由空格分隔,使用制表符   鼓励用于此目的的字符。如果a中未使用某个字段   特殊条目短划线“ - ”标记省略的字段。指令记录   有关日志记录过程本身的信息。“

http://www.w3.org/TR/WD-logfile.html

罗伯特麦克默里写了一篇关于如何编写COM插件的博客,在我的研究中试图解决同样的问题,似乎是最好的解决方案(缺少编写一个正则表达式来替换“”中的所有空格“ +“)

http://blogs.iis.net/robert_mcmurray/archive/2013/02/28/advanced-log-parser-part-7-creating-a-generic-input-format-plug-in.aspx

希望这有帮助

编辑:我已经确定有一种方法可以执行此操作,请参阅以下示例,使用X-Header-For字段我手动添加到IIS高级日志记录,重要位是粗体。

LogParser.exe“SELECT SUBSTR(X-Header-For,0,INDEX_OF(X-Header-For,','))为[Remote Ip],日期,时间,cs-uri-stem,s-contentpath ,sc-status FROM $ log“ -i:W3C -dQuotes ON