20 lipca 2011

Programista i jego Troubleshooting Toolkit (Część I) - Przeglądanie logów

Programista i rozwiązywanie problemów

Postanowiłem opublikować kilka postów o narzędziach, które mogą pomóc programistom w rozwiązywaniu problemów z oprogramowaniem na platformie Windows. Nie zawsze możemy debuggować kod źródłowy oprogramowania z którym przyszło name pracować. Często jesteśmy użytkownikiem produktu od zewnętrznego producenta (np. Microsoft) i nie możemy zmusić danego programu, komponentu do działania.

Poszukiwany, poszukiwana


W poniższym poście przedstawiam narzędzia z których korzystam na codzień gdy muszę przeanalizować logi (np. w formie pliku tesktowego). Podejrzewam, że nawet najszczęśliwszy programista musi czasami przejrzeć logi w poszukiwaniu błędów, wskazówek, wyjątków itd. Opracowałem listę narzędzi, które mogą być pomocne przy przeglądaniu różnego rodzaju logów na platformie Windows.


Tail for Win32

Tail for Win32 jest sympatycznym programem do śledzenia "ogonka" logu. Jest on bardzo przydatny w sytuacji gdy monitorujemy zmiany na bieżąco i nie chcemy w nieskończoność przeładowywać danego pliku w edytorze tekstu. Program umożliwia też definiowanie i kolorowanie słów kluczowych (np. service i stopped na załączonym obrazku poniżej).





Opcja którą najbardziej cenię:
Możliwość obserwacji kilku plików w tym samym momencie (nawet na różnych serwerach). 



Notepad++

Notepad++ - jest to rozbudowany edytor tekstu, z dobrze działającym kolorowaniem składni, dopracowanym wyszukiwaniem w wielu plikach oraz nagrywaniem makr.




Podświetlanie tych samych wyrazów w momencie zaznaczenia ciągu znaków.



Event Log Viewer

Event Log Viewer (eventvwr) -  program do przeglądania logów systemu operacyjnego Windows. Jest to źródło wiedzy o aktualnych problemach system operacyjengo, aplikacji (szczególnie aplikacje serwerowe). Na uwagę zasługuje tendencja do specializacji, już teraz po instalacji SharePoint'a 2010 na Windows Server 2008 posiada on dedykowaną kategorię logów Microsoft->SharePoint Products->Shared.





Jeżeli wszystko zawodzi i mam kompletny brak pomysłów na zlokalizowanie zródła problemu czas uruchomić w lini poleceń  eventvwr.




DebugView

DebugView pozwala przeglądać Debug output dla lokalnego lub zdalnenego systemu Windows. Używanie Debug output może być w pewnych przypadkach alternatywą dla generowania plików tekstowych przez program. Do zdiagnozowania problemu na serwerze produkcyjnym możemy pozostawić Debug output a do pliku zapisywać jedynie ogólne informacje o działaniu programu.


Używając klasy Debug można wygenerować output, który zostanie wyświetlony w DebugView.



System.Diagnostics.Debug.WriteLine("Debug output.");



WinMerge


WinMerge - program bez którego nie wyobrażam sobie porównywania tekstu (np. tekstu z dwóch róznych logów). Może porównywać katalogi, poszczególne pliki oraz pojedyncze linie tekstu. Integruje się także z klientem Subversion TortoiseSVN i można użyć WinMerge do porównywania kolejnych revision pliku.


Porównywanie dwóch katalogów z możliwością przeszukiwania rekurencyjnego.



Total Commander


Total Commander służy głównie do zarządzania systemem plików, aczkolwiek nieprzypadkowo umieściłem go na tej liście. Jedną z funkcji Total Commander'a jest wyszukiwanie fraz tekstu w plikach. Jest to bardzo pomocne, gdy mamy np. 100 plików logów, a szukamy np. po nazwie wyjątku.




Wyszukiwanie tekstu z filtrowaniem po rozszerzeniu pliku.



LogParser

LogParser - konsolowa aplikacja pozwalająca analizować i transformować logi w róznych formatach (np. XML, CSV, IISW3C, Event Log etc). LogParser wspiera możliwość konstruowania kwazi-zapytań przypominających składnią język SQL, jest to przydatne przy analizie większej ilości danych. Najprostszym przykładem może być analiza logów IIS'a  w formacie IISW3C, gdzie np. konstruujemy proste statystyki na temat ilości Http Request do danych zasobów.



LogParser -i:IISW3C "SELECT  TOP 5  cs-uri-stem AS Url, COUNT(*) AS Hits  FROM IISLogFileName.log GROUP BY Url ORDER BY Hits DESC"

Na codeplex.com można znaleźć program o nazwie Visual Log Parser który dostarcza okienkowy interfejs do konsolowej aplikacji.


Konstruowanie zapytań do analizy logów przy użyciu kwazi-SQL'a.



Hope this helps.

2 komentarze:

  1. Przydaje się jeszcze FileMon i czasem DiskMon (tak to zdaje się było). FileMon pozwala sprawdzić np. jakie pliki (m. in. dlle) są ładowane przez dany program, co ułatwia znalezienie problemów z niekompatybilnością (np. brakuje dlla w określonej wersji w określonym miejscu).

    OdpowiedzUsuń
  2. Cześć Adam,

    Mam nadzieję, że czas i chęci pozwolą na opisanie całej serii o narzędziach do troubleshootingu. Myślałem też o programikach z sysinternals, które są bardzo przydatne. Do twojej listy dodam Proces Explorer, który pokazuje np. jakie DLL'lki rezydują w pamięci danego procesu.

    OdpowiedzUsuń

Uwaga: tylko uczestnik tego bloga może przesyłać komentarze.