Danas većina aplikacija i sistemskih aplikacija povremeno sprema informacije o procesu svog rada, pogreškama i kvarovima u posebne zapisnike koji se nazivaju zapisnici. Većina operativnih sustava opće namjene pruža usluge koje omogućuju pisanje dnevnika pomoću standardnog programskog sučelja.
Potrebno
- - C kompajler;
- - SDK za platformu Windows;
- - Razviti paket za glibc.
Upute
Korak 1
Dodajte podršku za pisanje dnevnika u sistemski zapisnik iz vaše aplikacije dizajnirane za rad u operativnim sustavima iz obitelji Windows.
Koristite funkciju RegisterEventSource API za registraciju aplikacije kao izvora događaja, funkciju ReportEvent za dodavanje unosa u zapisnik i funkciju DeregisterEventSource za zatvaranje ručke koju vraća RegisterEventSource.
Ima smisla nazvati RegisterEventSource tijekom inicijalizacije aplikacije i cijelo vrijeme spremati vraćeni deskriptor, tako da se unosi u dnevnik mogu postavljati s različitih mjesta u programu. Najjednostavniji primjer pisanja u Windowsov zapisnik može izgledati ovako:
HANDLE hLog = RegisterEventSource (NULL, "MyApplicationName");
ako (hLog! = NULL)
{
if (ReportEvent (hLog, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, "Tekst poruke / 0", NULL))
{
// događaj je uspješno zabilježen
}
DeregisterEventSource (hLog);
}
Više pojedinosti o semantici funkcije ReportEvent nalazi se u MSDN-u na https://msdn.microsoft.com/en-us/library/windows/desktop/aa363679%28v=vs.85%29.aspx. Osim toga, u sistemski registar morate staviti neke podatke o izvršnom modulu aplikacije i dodati resurse u određenom formatu samom modulu ili dinamičkoj knjižnici treće strane. Za više informacija o ključevima registra za uslugu evidencije događaja pogledajte
Korak 2
Prijava na operativni sustav kompatibilan s Linuxom obično se može izvršiti pomoću syslog demona. Ova usluga ima sučelje na razini aplikacije u obliku skupa funkcija, čije su deklaracije smještene u datoteku zaglavlja syslog.h.
Upotrijebite funkciju openlog za stvaranje veze s uslugom syslog iz aplikacije ili knjižnice. Pozovite syslog ili vsyslog funkcije da stavite poruke u zapisnik. Nakon završetka snimanja događaja ili kada aplikacija izlazi, zatvorite vezu s uslugom pozivanjem funkcije zatvaranja dnevnika. Osim toga, možete konfigurirati postavke tako da ignoriraju pozive koji dodaju zapise događaja s određenim prioritetom pomoću funkcije setlogmask. Primjer pisanja poruka u zapisnik mogao bi izgledati ovako:
openlog ("MyApplication", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
syslog (LOG_NOTICE, "MyApplication je pokrenut s PID% d", getuid ());
syslog (LOG_INFO, "Informativna poruka!");
closelog ();
Za više informacija o parametrima funkcija API-ja syslog, pogledajte libc info dokumentaciju.
3. korak
Napišite zapisnike u proizvoljne datoteke koristeći vlastitu implementaciju podsustava trajanja događaja. Jedno od najjednostavnijih rješenja ovog problema je stvaranje nekoliko funkcija u globalnom opsegu, od kojih jedna otvara datoteku s određenim imenom u načinu dodavanja podataka, druga je zatvara, a treća dodaje niz poruka koji joj se prosljeđuje kao parametar za ovu datoteku. Konceptualno, ovo rješenje sliči programskom sučelju syslog-a u Linuxu.
Upotrijebite funkcije fopen i fclose u standardnoj knjižnici C za otvaranje i zatvaranje datoteke. Nazovite fwrite da biste dodali podatke u datoteku. Također možete koristiti funkcije specifične za platformu (na primjer, CreateFile u sustavu Windows) i metode objekata korištenih okvira koji obuhvaćaju funkcionalnost rada s datotekama.