Jedným z hlavných spôsobov, ako diagnostikovať poruchy fungovania softvéru, ktorý je už spustený v počítači používateľa, je viesť protokoly udalostí - protokoly. Spravidla zaznamenávajú informácie o spusteniach, ako aj dôležité informácie o stave procesu a prostredí systému v prípade kritickej poruchy. Protokoly môžete vytvárať vlastnými prostriedkami aj pomocou špeciálnych služieb operačných systémov.
Je to nevyhnutné
- - prekladateľ z použitého programovacieho jazyka;
- - prípadne Windows Platform SDK;
- - možno vývojový balík pre glibc.
Inštrukcie
Krok 1
Analyzujte podmienky použitia a vytvorte požiadavky na vyvinutý subsystém, komponent alebo knižnicu, ktorá bude vytvárať protokoly. Odpovedzte na otázky, na ktorej platforme alebo platformách by mala fungovať, aké bude jej API.
Krok 2
V súlade s identifikovanými funkčnými funkciami a poskytnutým API vytvorte šablónu pre subsystém protokolovania. Začnite implementovať jeho funkčnosť.
Krok 3
Najjednoduchšou možnosťou protokolovania je nezávislé vytváranie súborov na mieste určenom konfiguráciou aplikácie a následné zapisovanie údajov do nich v ľubovoľnom formáte. Použite štandardné funkcie knižnice C (fopen, fclose, fwrite), štandardné objekty toku knižnice C ++ (ofstream), použité rámcové triedy (napríklad CFile, QFile) alebo funkcie API operačného systému (CreateFile, WriteFile v systéme Windows).
Krok 4
Implementujte protokolovanie pomocou rozhrania syslog API na operačných systémoch kompatibilných so systémom UNIX. Funkcie API syslog sú deklarované v hlavičkovom súbore syslog.h. Pripojte ho na správnom mieste v zdrojovom kóde svojho projektu.
Krok 5
Pripojte sa k službe syslog pomocou volania funkcie openlog. Ako parametre odovzdajte ukazovateľ na reťazec obsahujúci identifikátor aplikácie alebo komponentu, ktorý bude zapisovať, príznaky možností a masku udalostí, ktoré sa majú odovzdať do protokolu. Na pridanie položiek do denníka môžete použiť volanie funkcií syslog a vsyslog. Zavolajte funkciu closelog a odpojte sa od služby. Jednoduchým príkladom kódu syslog môže byť: openlog ("predpona", LOG_NDELAY | LOG_CONS | LOG_PID, LOG_LOCAL1); syslog (LOG_INFO, "% s", "Info"); syslog (LOG_NOTICE, "% s", "Poznámka"); closelog (); Dáva zmysel pripojiť sa k syslog pri inicializácii aplikácie a odpojiť sa pri vypnutí.
Krok 6
V operačných systémoch Windows použite EventLog API na pridanie položiek do systémových protokolov. Zavolajte RegisterEventSource a získate deskriptor protokolu na zadanom počítači. Túto rukoväť použite pri volaní funkcie ReportEvent, ktorá zapisuje do protokolu. Po dokončení zavolajte DeregisterEventSource, aby ste ukončili pripojenie a uvoľnili prostriedky pridelené RegisterEventSource. Najjednoduchším príkladom práce s EventLogom môže byť: HANDLE h =:: RegisterEventSource (NULL, "AnySource"); ASSERT (h! = NULL);:: ReportEvent (h, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 3, 0, "Text1Text2Text3", NULL);:: DeregisterEventSource (h); Rovnako ako v prípade syslogu má zmysel volať RegisterEventSource pri štarte a DeregisterEventSource pri vypnutí aplikácie.