V súčasnosti väčšina aplikačných a systémových aplikácií pravidelne ukladá informácie o procese svojej práce, chybách a zlyhaniach do špeciálnych protokolov nazývaných protokoly. Väčšina operačných systémov na všeobecné účely poskytuje služby, ktoré vám umožňujú písať protokoly pomocou štandardného programovacieho rozhrania.
Nevyhnutné
- - kompilátor C;
- - Windows Platform SDK;
- - Vytvorte balík pre glibc.
Inštrukcie
Krok 1
Pridajte podporu pre zápis protokolov do systémového protokolu z aplikácie, ktorá je navrhnutá na prácu v operačných systémoch rodiny Windows.
Pomocou funkcie RegisterEventSource API zaregistrujte aplikáciu ako zdroj udalosti, pomocou funkcie ReportEvent pridajte položku do protokolu a pomocou funkcie DeregisterEventSource zatvorte rukoväť vrátenú RegisterEventSource.
Má zmysel volať RegisterEventSource počas inicializácie aplikácie a neustále ukladať vrátený deskriptor, aby bolo možné záznamy v denníku umiestňovať z rôznych miest programu. Najjednoduchší príklad zápisu do protokolu Windows môže vyzerať takto:
HANDLE hLog = RegisterEventSource (NULL, "MyApplicationName");
if (hLog! = NULL)
{
if (ReportEvent (hLog, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, „Text správy / 0“, NULL))
{
// udalosť bola úspešne prihlásená
}
DeregisterEventSource (hLog);
}
Viac podrobností o sémantike funkcie ReportEvent nájdete na serveri MSDN na adrese https://msdn.microsoft.com/en-us/library/windows/desktop/aa363679%28v=vs.85%29.aspx. Okrem toho musíte do systémového registra vložiť niektoré údaje o spustiteľnom module aplikácie a pridať prostriedky v konkrétnom formáte do samotného modulu alebo dynamickej knižnice tretej strany. Ďalšie informácie o kľúčoch registra pre službu denníka udalostí nájdete na stránke
Krok 2
Prihlásenie do operačných systémov kompatibilných s Linuxom sa dá zvyčajne vykonať pomocou démona syslog. Táto služba má rozhranie na úrovni aplikácie vo forme súboru funkcií, ktorých vyhlásenia sú umiestnené v hlavičkovom súbore syslog.h.
Pomocou funkcie openlog vytvorte pripojenie k službe syslog z aplikácie alebo knižnice. Zavolajte funkcie syslog alebo vsyslog a vložte správy do denníka. Po skončení zaznamenávania udalostí alebo po ukončení aplikácie ukončite spojenie so službou vyvolaním funkcie closelog. Okrem toho môžete nakonfigurovať nastavenie na ignorovanie hovorov, ktoré pridávajú záznamy udalostí so špecifickou prioritou, pomocou funkcie setlogmask. Príklad zápisu správ do denníka môže vyzerať takto:
openlog ("MyApplication", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
syslog (LOG_NOTICE, "MyApplication je spustený s PID% d", getuid ());
syslog (LOG_INFO, "Informačná správa!");
closelog ();
Viac informácií o parametroch funkcií API syslog nájdete v dokumentácii libc info.
Krok 3
Zapisujte protokoly do ľubovoľných súborov pomocou vlastnej implementácie subsystému pretrvávania udalostí. Jedným z najjednoduchších riešení tohto problému je vytvorenie niekoľkých funkcií v globálnom rozsahu, z ktorých jedna otvorí súbor so špecifickým názvom v režime pridania informácií, druhá ho zatvorí a tretia pridá reťazec správy, ktorý mu bude odovzdaný ako parameter tohto súboru. Koncepčne sa toto riešenie podobá na programovacie rozhranie syslog v systéme Linux.
Na otvorenie a zatvorenie súboru použite funkcie fopen a fclose štandardnej knižnice C. Zavolajte fwrite a pridajte informácie do súboru. Môžete tiež použiť funkcie špecifické pre platformu (napríklad CreateFile v systéme Windows) a metódy objektov použitých rámcov, ktoré zapuzdrujú funkčnosť práce so súbormi.