2012-03-08 5 views
7

Niedawno zacząłem używać Log Parser z interfejsem graficznym.Używanie parsera dziennika do analizowania wielu dzienników w różnych folderach

Dzienniki, które chcę przeanalizować, pochodzą z usług IIS i są powiązane z programem SharePoint. Na przykład chcę wiedzieć, ile osób odwiedza poszczególne strony internetowe, itp.

Wygląda na to, że usługi IIS tworzą dzienniki w różnych folderach (nie wiem dlaczego), a każdego dnia jest nowy plik dziennika w inny folder.

Moje pytanie brzmi: czy można podejść do wszystkich plików w różnych folderach?

Wiem, że można użyć From-clause, umieścić różne foldery, ale jest to zbyt trudne, szczególnie jeśli w przyszłości nowe foldery są dodawane. Celem jest stworzenie jednego skryptu, który zostanie wykonany.

Tak na przykład w dzienniku folderu o nazwie logi mam foldery folder1 katalogu2, folder3, folder4 itd aw każdym folderze znajdują się pliki dziennika LOG1, log2, log 3, logn itp

Moje zapytanie powinno brzmieć tak: Select * FROM path/LogFiles/*/*.log, ale parser nie przyjmuje go, więc jak go zrealizować?

Odpowiedz

17

Można użyć opcji recurse Dzwoniąc LogParser.

Na przykład:

logparser file:"query.sql" -i:IISW3C -o:CSV -recurse 

gdzie query.sql zawiera:

select * 
from .\Logs\*.log 

iw moim bieżącym katalogu, istnieje katalog o nazwie „Dzienniki”, które zawiera wiele podkatalogów, każda zawierająca pliki dziennika. Takich jak:

\Logs\server1\W3SVC1 
\Logs\server1\W3SVC2 
\Logs\server2\W3SVC1 
\Logs\server2\W3SVC2 
etc. 
+1

zweryfikowane 21 kwietnia 2014. działa to również jako Z: \ LogParser \ *. Log – Jack

5

Można łączyć dzienniki następnie kwerendy powstałemu w wyniku połączenia Log

co mam zrobić, to

LogParser.exe -i:w3c "select * into E:\logs\merged.log from E:\logs\WEB35\*, E:\logs\WEB36\*, E:\logs\WEB37\*" -o:w3c 
0

Pomoc LogParser nie zawiera opcji -recurse, więc nie jestem pewien, czy nadal jest obsługiwana. Jednak to, co zrobiłem, aby ominąć go:

Powiedzmy, można użyć następującego polecenia, aby wykonać LogParser -

logparser "SELECT * INTO test.csv FROM 'D:\samplelog\test.log'" -i:COM -iProgID:Sample.LogParser.Scriptlet -o:CSV 

Następnie wystarczy utworzyć skrypt wsadowy „recurse” poprzez strukturę folderów i analizowania wszystkie pliki w nim. Skrypt wsadowy, który to robi wygląda tak: -

Wykonaj go ze ścieżki, w której znajdują się pliki dziennika, które należy przeanalizować. Można to dodatkowo dostosować do opluwania wszystkich analizowanych dzienników w jednym pliku przy użyciu operatora append (>>).

Mam nadzieję, że to pomoże.

1

Wolę taką powłokę: Select-String C:\Logs\diag\*.log -pattern "/sites/Very" | ?{$_.Line -match "Important"} lub cokolwiek chcesz.

+0

Witam i zapraszam do StackOverflow. Proszę sformatować odpowiedź i dodać więcej informacji, ponieważ odpowiedź taka jak ta jest nieodpowiednia dla SO. Proszę zajrzeć na http://stackoverflow.com/help/how-to-answer, aby uzyskać więcej informacji. – Chaithanya