2009-02-15 13 views
6

Mam dziennik IIS z dodatkowym polem "foo".Dzienniki Query IIS z dodatkowymi polami przy użyciu LogParser

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

W rezultacie wszystkie zapytania LogParser są podzielone: ​​

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

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

Czy to możliwe, aby informować o takich LogParser dodatkowych pól, dzięki czemu może analizować pliki IIS?

Odpowiedz

10

Wypróbuj format W3C (-i: W3C).

Jeśli to nie zadziała i jest to jednorazowa analiza, można utworzyć skrypt, aby usunąć tę kolumnę. Jeśli jest to działanie ciągłe, możesz rozważyć użycie standardowego formatu lub przynajmniej przeniesienie dodatkowego pola do końca.

Przy okazji LogParser obsługuje custom input formats.

+0

-i: W3C działa! Możliwe jest nawet zapytanie o wartość "foo". – alex2k8

+0

Analizator logów W3C działa z nagłówkiem "X-Forwarded-For" do testowania "lepkości" load balancera –

0

Nie wiem o LogParser, ale jeśli nie uda Ci się tego, możesz wypróbować splunk, która z łatwością obsługuje różne formaty logów.

0

użyj opcji -iHeaderFile, aby zdefiniować własne pola. logparser -h okażą dodatkowe informacje

0

To bardzo łatwe do zrobienia!

Po prostu użyj funkcji TRIM wokół napisu. W ten sposób możesz wpisać dowolny ciąg znaków jako niestandardowe dodatkowe pole w kwerendzie analizatora dziennika.

referencyjny: http://logparserplus.com/Functions#function_TRIM

Na przykład, mogę to zrobić w tym zapytaniu (używany do pobierania czasu średnia i maksymalna):

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" 
Powiązane problemy