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

pdkcd3nj  于 2023-02-12  发布在  其他
关注(0)|答案(5)|浏览(132)

我的IIS日志中有额外的字段“foo”。

#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文件?

t9eec4r0

t9eec4r01#

尝试W3C格式(-i:W3C)。
如果这样做不起作用,并且这是一次性分析,则可以创建一个脚本来去除该列。如果这是一个正在进行的活动,则可能需要考虑使用标准格式,或者至少将额外字段移到末尾。
顺便说一下,LogParser确实支持custom input formats

ezykj2lf

ezykj2lf2#

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

slmsl1lt

slmsl1lt3#

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

mjqavswn

mjqavswn4#

这很容易做到!
只需在字符串周围使用TRIM函数。这样,您就可以在日志解析器查询中键入任何想要作为自定义附加字段的字符串。
参考:www.example.comhttp://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"
lqfhib0f

lqfhib0f5#

这适用于HTTErLog文件:按照相同的顺序使用日志文件的列创建头文件,并将其另存为- header.txt
对SQL查询使用以下格式

LogParser.exe "SELECT sc-status, s-reason, s-queuename, count(*) from C:\temp\HTTPLogs\*.log group by sc-status, s-reason, s-queuename order by count(*) desc" -i:TSV -iseparator:space -iHeaderFile C:\temp\HTTPLogs\header.txt

相关问题