使用LogParser查询带有额外字段的IIS日志

时间:2009-02-15 18:15:25

标签: iis logparser

我有额外字段'foo'的IIS日志。

#Fields: foo date s-sitename ...
foo1 2009-02-15 W3SVC1 ...
foo2 2009-02-15 W3SVC1 ...

结果所有LogParser查询都被破坏了:

logparser -i:IISW3C  "SELECT c-ip, s-ip FROM my.log"

Statistics:
-----------
Elements processed: 0
Elements output:    0
Execution time:     0.00 seconds

是否可以通知LogParser这些额外字段,以便它可以解析IIS文件?

4 个答案:

答案 0 :(得分:14)

尝试W3C格式(-i:W3C)。

如果这不起作用并且这是一次性分析,您可以创建一个脚本来去除该列。如果这是一项持续的活动,您可能需要考虑使用标准格式,或者至少将额外字段移动到最后。

顺便说一句,LogParser支持custom input formats

答案 1 :(得分:0)

不了解LogParser,但如果你没有成功,你可以尝试splunk,它似乎很容易处理不同的日志格式。

答案 2 :(得分:0)

使用选项-iHeaderFile来定义您自己的字段。 logparser -h将提供其他信息

答案 3 :(得分:0)

这很容易做到!

只需在字符串周围使用 TRIM 功能即可。这样,您可以在Log Parser Query中键入您想要的任何字符串作为自定义额外字段。

参考:http://logparserplus.com/Functions#function_TRIM

例如,我在此查询中执行此操作(用于检索Average和Max时间):

logparser -i:IISW3C -rtp:-1 -o:NAT -headers:OFF -iw:ON "SELECT TRIM('my-website-custom-extra-column-name.com') AS siteName, TRIM('foo-bar-custom-extra-column-name') AS fooBar, AVG(time-taken) As AverageTimeTaken, MAX(time-taken) As MaxTimeTaken, COUNT(*) As Hits, TO_LOWERCASE(cs-uri-stem) As Uri FROM C:\inetpub\yourwebsite.com\ex*.log TO c:\myOutputParsedLog.txt WHERE (Extract_Extension(To_Lowercase(cs-uri-stem)) IN ('aspx')) GROUP BY TO_LOWERCASE(cs-uri-stem) ORDER BY AverageTimeTaken DESC"