13

我有带有额外字段“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

4 回答 4

24

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

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

顺便说一下,LogParser 确实支持自定义输入格式

于 2009-02-15T19:13:44.240 回答
1

使用选项 -iHeaderFile 定义您自己的字段。logparser -h 将证明附加信息

于 2009-10-23T22:21:18.233 回答
0

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

于 2009-02-15T18:23:53.907 回答
0

这很容易做到!

只需在字符串周围使用TRIM函数。这样,您可以在日志解析器查询中键入任何您想要的字符串作为自定义额外字段。

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

例如,我在此查询中执行此操作(用于检索平均和最大时间):

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"
于 2016-09-03T22:04:26.603 回答