2009-02-15 7 views
6

Ich habe IIS Protokoll mit extra Feld 'foo'.Abfrage IIS-Protokolle mit zusätzlichen Feldern mit LogParser

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

Als Ergebnis alle LogParser Abfragen werden gebrochen:

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

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

Ist es möglich, LogParser über solche zusätzliche Felder zu informieren, also kann es IIS-Dateien analysieren?

Antwort

10

Versuchen Sie W3C-Format (-i: W3C).

Wenn dies nicht funktioniert und dies eine einmalige Analyse ist, könnten Sie ein Skript erstellen, um diese Spalte auszublenden. Wenn dies eine fortlaufende Aktivität ist, sollten Sie in Betracht ziehen, ein Standardformat zu verwenden oder zumindest das zusätzliche Feld an das Ende zu verschieben.

LogParser unterstützt übrigens custom input formats.

+0

-i: W3C hat funktioniert! Es ist sogar möglich, den 'foo'-Wert abzufragen. – alex2k8

+0

Log Parser W3C-Format arbeitet mit "X-Forwarded-For" Header zum Testen Load Balancer "Klebrigkeit" –

0

Ich weiß nichts über LogParser, aber wenn Sie damit nicht erfolgreich sind, können Sie versuchen splunk, die einfach verschiedene Protokollformate zu behandeln scheint.

0

Verwenden Sie die Option -iHeaderFile, um Ihre eigenen Felder zu definieren. logparser -h wird zusätzliche inforamtion beweisen

0

Es ist sehr einfach zu tun! Verwenden Sie einfach die TRIM Funktion um Ihre Zeichenfolge. Auf diese Weise können Sie eine beliebige Zeichenfolge als benutzerdefiniertes Extrafeld in eine Protokollparser-Abfrage eingeben.

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

Zum Beispiel habe ich es in dieser Abfrage tun (verwendet, um die Durchschnitts- und Max Zeit abrufen):

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" 
Verwandte Themen