Winuser's Blog

8 lutego 2010

Implementacja prostej klasy logującej zdarzenia.

Filed under: C++,Programowanie — winuser @ 23:45

Ostatnio siedzę przy pewnym dużym projekcie (pisałem chyba już o tym gdzieś niżej). Dotychczas jeśli wystąpił jakiś błąd, stosowałem zwykły MessageBox. Rozwiązanie może i dobre jeśli użytkownik cały czas pracuje z aplikacją. Lecz co zrobić, jeśli taka aplikacja działa sobie gdzieś w tle uruchomiona, może na zdalnym serwerze. Użytkownik taki uruchomił sobie instancję procesu, wylogował się z sesji zdalnej i niczego nie świadom na drugi dzień łączy się ponownie z serwerem i co widzi ? Piękny MessageBox, który zatrzymał dany wątek, oczywiście to co zaplanował sobie nie wykonało się. Mało tego, jeśli oczekujemy danych które przychodzą seriami, chcemy je w jakiś sposób pokazać (chodzi np. o diagnozę problemu występującego w aplikacji na stacji gdzie nie mamy zainstalowanego naszego IDE ani nie mamy tam źródła). Pokazywanie za każdym razem komunikatu też troszkę mija się z celem. Postanowiłem więc napisać sobie „coś” co będzie realizowało moje zadania. Wiedziałem tylko, że chcę aby to było pisane w C++ a nie C. Oprócz tego chciałem aby wywołanie np metody zapisującej jakieś informacje do pliku loga nie wymagało dużo linijek kodu (no, najlepiej jednej : D ). Ze statycznymi członkami klas miałem doczynienia już troszkę wcześniej, lecz w dość ograniczonym stopniu. Tak powstał plik nagłówka z definicją mojej klasy. Wygląda on mniejwięcej tak :

Obiekt „File” to moja klasa do obsługi plików, oparta na funkcjach API Windows`a. Metodę Init() wywołuję podczas inicjalizacji aplikacji i jest ona wywoływana tylko raz. W momencie kiedy aplikacja zostaje zamykana wywoływana jest metoda Close(). To teraz pora na zawartość kodu tej klasy.

W klasie która jest w moim projekcie oprócz tego jest jeszcze metoda służąca do dołączania daty oraz czasu zdarzenia do zmiennej „content”. Ponieważ wszystkie zmienne oraz metody zadeklarowane jako „static” nie są związane z konkretną instancją klasy, możemy je wywoływać w ten sposób: Pola statyczne, mogą zostać wykorzystane przykładowo do zliczenia ilości instancji danej klasy, są przydatne w przypadku mechanizmu Callbacków, wątków, i innych. Poniżej przykład wykorzystania klasy DebugClass :

Reklamy

Dodaj komentarz »

Brak komentarzy.

RSS feed for comments on this post. TrackBack URI

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

%d blogerów lubi to: