2009-02-15 35 views
6

我的IIS日誌帶有額外字段'foo'。使用LogParser查詢具有額外字段的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文件?

回答

10

嘗試使用W3C格式(-i:W3C)。

如果這樣不起作用並且這是一次性分析,那麼您可以創建一個腳本來去除該列。如果這是一項正在進行的活動,那麼您可能需要考慮使用標準格式,或者至少將額外字段移到最後。

順便說一句LogParser支持custom input formats

+0

-i:W3C的工作!甚至可以查詢'foo'值。 – alex2k8 2009-02-16 10:37:35

0

不知道LogParser,但如果你不成功,你可以嘗試splunk這似乎很容易處理不同的日誌格式。

0

使用選項-iHeaderFile來定義您自己的字段。 logparser -h將證明額外的信息

0

這很容易做到!

只需使用圍繞字符串的TRIM函數。這樣,您可以在Log Parser Query中輸入任何字符串作爲自定義額外字段。

參考: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"