Das Logparser Werkzeug kann die Ergebnisse einer Abfrage unter Verwendung einer Vorlagendatei in eine Ausgabedatei schreiben. Dieser Funktionalität lässt sich z.B. verwenden um das Ergebnis einer Web-Log Analyse in eine .html Datei schreiben zu lassen:

logparser -i:w3c "SELECT sc-status As Status, COUNT(*) AS Total FROM c:\temp\logfiles\w3svc11\*.log TO c:\temp\result\StatusCodes.html GROUP BY Status ORDER BY Status ASC" -o:TPL -TPL:".\Samples\TemplateFiles\StatusCodes.tpl"

Logparser Sample Output using StatusCodes.tpl

Als Vorlagendatei verwenden wir ein sog. „Structured Format Template“ (siehe Logparser Hilfe). Die Vorlage definiert einen sich wiederholdenden Bereich (<LPBODY>) in dem die Werte (in „ %xyz%“) aus den Spalten (der Abfrage) geschrieben werden:

<TABLE...

.

.

.

<LPBODY>

<TR>

 <TD>%Status%</TD>

 <TD>%Total%</TD>

</TR>

</LPBODY>

.

.

.

</TABLE>...

Um Logparser Web-Log Analysen später automatisieren zu können (z.B. via den Task Scheduler) bietet sich an die jeweilige Query („SELECT ….“) parameteriesiert in eine Text Datei auszulagern (z.B. .\Samples\TemplateFiles\StatusCodes_mod.sql):

SELECT STRCAT(TO_STRING(sc-status), REPLACE_IF_NOT_NULL(TO_STRING(sc-substatus), STRCAT('.',TO_STRING(sc-substatus)))) AS Status,

       COUNT(*) AS Total

FROM %InputLog%

TO %OutputPath%

GROUP BY Status

ORDER BY Status ASC

und so o.ä. aufzurufen:

logparser -i:w3c file:".\Samples\TemplateFiles\StatusCodes_mod.sql?InputLog=c:\temp\logfiles\w3svc11\*.log+OutputPath=c:\temp\result\StatusCodes.html" -o:TPL -TPL:".\Samples\TemplateFiles\StatusCodes.tpl"

Man sammle nun ein paar Web-Log Analyse Queries nach eigenen Bedarf z.B. in der Form:

logparser - statuscodes

(.sql für die Query und .tpl für das html snippet)

Schreibe ein Batch Datei welches Queries einzeln aufruft und Ausgabe z.B. in eine default.htm kombiniert. Dieser Batch sollte Eingabeparameter verabeiten wie wo sind die zu analysierenden Logfiles und wohin sollen die Ergebnisse geschrieben werden:

echo on

if not exist "C:\Program Files\Log Parser 2.2\" (cd "c:\Program Files (x86)\Log Parser 2.2") else (cd "C:\Program Files\Log Parser 2.2\")

 

rem MonitoringPeriod

start /wait LogParser.exe -i:w3c file:%1\MonitoringPeriod.sql?InputLog=%2+OutputPath=%3\100.html -o:TPL -tpl:%1\MonitoringPeriod.tpl

.

.

.

type %1\header.html > %3\default.htm

for %%f in (%3\*.html) do type %%f >> %3\default.htm

type %1\footer.html >> %3\default.htm

del %3\*.html

 

Als Ergebnis hier eine simple rudimentäre Web-Log Analyse Beispiel-Seite (demo):

 Logparser Sample Website showing simple web log analytics

Wie kriege ich obige Beispiel-Seite zum Laufen?

1.       Software Vorraussetzung: Logparser2.2 + Chart Unterstützung (Office Web Components 11) müssen installiert sein.

2.       Download des Beispiels von hier oder s.u.

3.       Extrahieren der Zip Datei nach z.B. C:\inetpub\analytics\

4.       Aufruf von TaskSchedulerBatch.cmd von der Commandline mit den Parametern:

 TaskSchedulerBatch.cmd [Where are the .sql and .tpl files folder] [Where are the logs folder + logname] [Where should the output go folder]

Beispiel:

TaskSchedulerBatch.cmd "C:\Users\bfrank\Documents\My Logparser Queries" "c:\temp\logfiles\w3svc11\*.log" "c:\temp\result"

Task Scheduler: yes!

Einfach im Task Scheduler das „Task Scheduler Import (TaskSchedulerBatch).xml” importieren

Benutzernamen ändern und evtl. Pfade korrigieren.

Wichtige Anmerkungen:

Ich übernehme kein Verantworung für die Verwendung des Codes. Use at your own risk! J

Log analysen können lange dauern brauchen evtl. viel CPU sollten daher nicht auf der Produktivmaschine gemacht werden J

Die Ausgaben sollten evtl. nicht jedermann zur Verfügung gestellt werden. J

Viel Spaß!