Jedan od glavnih načina dijagnosticiranja kvarova u radu softvera koji se već izvodi na korisnikovom računalu je vođenje dnevnika događaja - dnevnika. Tipično bilježe podatke o lansiranjima, kao i važne informacije o stanju procesa i sistemskom okruženju u slučaju kritičnog kvara. Zapisnike možete stvoriti vlastitim sredstvima i koristeći posebne usluge operativnih sustava.

Nužno je
- - prevoditelj s korištenog programskog jezika;
- - moguće SDK za Windows platformu;
- - moguće razvojni paket za glibc.
Upute
Korak 1
Analizirajte uvjete korištenja i izradite zahtjeve za razvijeni podsustav, komponentu ili knjižnicu koja će izrađivati zapisnike. Odgovorite na pitanja pod kojom platformom ili platformama treba raditi, koji će biti njezin API.
Korak 2
U skladu s identificiranim funkcijskim značajkama i predviđenim API-jem, stvorite predložak za podsustav bilježenja. Počnite implementirati njegovu funkcionalnost.
3. korak
Najjednostavnija opcija za bilježenje je samostalno stvaranje datoteka na mjestu određenom konfiguracijom aplikacije, a zatim u njih zapisati podatke u bilo kojem formatu. Upotrijebite funkcije standardne knjižnice C (fopen, fclose, fwrite), objekte struje standardne knjižnice C ++ (ofstream), korištene klase okvira (poput CFile, QFile) ili API funkcije operativnog sustava (CreateFile, WriteFile na Windowsima).
4. korak
Implementirajte zapisivanje pomoću API-ja syslog na operativnim sustavima kompatibilnim s UNIX-om. API funkcije syslog deklarirane su u datoteci zaglavlja syslog.h. Spojite ga na pravo mjesto 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. Upotrijebite pozive syslog i vsyslog funkcija za dodavanje unosa u zapisnik. Nazovite funkciju closelog da biste prekinuli vezu s 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 syslogom prilikom inicijalizacije aplikacije i prekinuti vezu prilikom gašenja.
Korak 6
U operacijskim sustavima Windows koristite API za EventLog za dodavanje unosa u sistemske zapisnike. Nazovite RegisterEventSource da biste dobili deskriptor dnevnika na navedenom računalu. Koristite ovu ručicu kada pozivate funkciju ReportEvent koja piše u zapisnik. Kada završite, nazovite DeregisterEventSource da biste prekinuli vezu i oslobodili resurse koje je dodijelio RegisterEventSource. Najjednostavniji primjer rada s EventLog mogao bi 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.