Jedan od glavnih načina dijagnosticiranja kvarova u radu softvera koji se već izvodi na korisnikovom računaru je vođenje dnevnika događaja - dnevnika. Tipično bilježe informacije o lansiranjima, kao i važne informacije o stanju procesa i sistemskom okruženju u slučaju kritičnog kvara. Evidencije možete kreirati i vlastitim sredstvima i koristeći posebne usluge operativnih sistema.
Neophodno je
- - prevodilac sa korišćenog programskog jezika;
- - moguće Windows Platform SDK;
- - moguće razvojni paket za glibc.
Instrukcije
Korak 1
Analizirajte uvjete korištenja i izradite zahtjeve za razvijeni podsistem, komponentu ili biblioteku koja će praviti zapisnike. Odgovorite na pitanja pod kojom platformom ili platformama treba raditi, koji će biti njen API.
Korak 2
U skladu s identificiranim funkcijskim značajkama i predviđenim API-jem, kreirajte predložak za podsistem zapisivanja. Počnite implementirati njegovu funkcionalnost.
Korak 3
Najjednostavnija opcija za evidentiranje je samostalno stvaranje datoteka na mjestu određenom konfiguracijom aplikacije, a zatim u njih upisati podatke u bilo kojem formatu. Koristite funkcije standardne knjižnice C (fopen, fclose, fwrite), objekte toka standardne knjižnice C ++ (ofstream), korištene klase okvira (kao što su CFile, QFile) ili API funkcije operativnog sistema (CreateFile, WriteFile na Windowsima).
Korak 4
Implementirajte evidentiranje pomoću API-ja syslog na UNIX-kompatibilnim operativnim sistemima. API funkcije syslog deklarirane su u datoteci zaglavlja syslog.h. Povežite ga na pravom mjestu u izvornom kodu vašeg projekta.
Korak 5
Povežite se na uslugu syslog pomoću poziva funkcije openlog. Kao parametre, dodajte mu pokazivač na niz koji sadrži identifikator aplikacije ili komponente koja će pisati, zastavice opcija i masku događaja koji se prosljeđuju u dnevnik. Koristite pozive syslog i vsyslog funkcija za dodavanje unosa u dnevnik. Pozovite funkciju closelog da prekinete vezu sa uslugom. Jednostavan primjer syslog koda može biti: openlog ("prefiks", LOG_NDELAY | LOG_CONS | LOG_PID, LOG_LOCAL1); syslog (LOG_INFO, "% s", "Info"); syslog (LOG_NOTICE, "% s", "Obavijest"); closelog (); Ima smisla povezati se s syslog-om prilikom inicijalizacije aplikacije i prekinuti vezu kada se isključi.
Korak 6
U operativnim sistemima Windows, koristite EventLog API za dodavanje unosa u sistemske evidencije. Pozovite RegisterEventSource da biste dobili deskriptor dnevnika na navedenom računaru. Koristite ovu ručicu kada pozivate funkciju ReportEvent koja piše u dnevnik. Kada završite, nazovite DeregisterEventSource da biste zatvorili vezu i oslobodili resurse koje je dodijelio RegisterEventSource. Najjednostavniji primjer rada s EventLog može biti: HANDLE h =:: RegisterEventSource (NULL, "AnySource"); ASSERT (h! = NULL);:: ReportEvent (h, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 3, 0, "Text1Text2Text3", NULL);:: DeregisterEventSource (h); Kao i za syslog, ima smisla nazvati RegisterEventSource na početku i DeregisterEventSource pri isključivanju aplikacije.