Danas većina aplikacija i sistemskih aplikacija povremeno sprema informacije o procesu svog rada, greškama i kvarovima u posebne zapisnike koji se nazivaju dnevnicima. Većina operativnih sistema opće namjene pruža usluge koje vam omogućavaju pisanje dnevnika pomoću standardnog programskog sučelja.
Potrebno
- - C kompajler;
- - SDK za Windows platformu;
- - Razviti paket za glibc.
Instrukcije
Korak 1
Dodajte podršku za pisanje dnevnika u sistemski dnevnik iz vaše aplikacije dizajnirane za rad pod operativnim sistemima porodice Windows.
Koristite funkciju RegisterEventSource API za registraciju aplikacije kao izvora događaja, funkciju ReportEvent za dodavanje unosa u dnevnik 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 Windows dnevnik može izgledati ovako:
HANDLE hLog = RegisterEventSource (NULL, "MyApplicationName");
if (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 detalja o semantici funkcije ReportEvent možete pronaći u MSDN-u na https://msdn.microsoft.com/en-us/library/windows/desktop/aa363679%28v=vs.85%29.aspx. Pored toga, u sistemski registar morate staviti neke podatke o izvršnom modulu aplikacije i dodati resurse u određenom formatu samom modulu ili nezavisnoj dinamičkoj knjižnici. Za više informacija o ključevima registra za uslugu evidencije događaja pogledajte
Korak 2
Prijavljivanje na operativne sisteme kompatibilne 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.
Koristite funkciju openlog za stvaranje veze sa uslugom syslog iz aplikacije ili biblioteke. Pozovite syslog ili vsyslog funkcije da stavite poruke u dnevnik. Nakon završetka događaja snimanja ili kada aplikacija izlazi, zatvorite vezu sa uslugom pozivanjem funkcije zatvaranja dnevnika. Pored toga, možete konfigurirati postavke da ignoriraju pozive koji dodaju zapise događaja s određenim prioritetom pomoću funkcije setlogmask. Primjer pisanja poruka u dnevnik može 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.
Korak 3
Napišite zapisnike u proizvoljne datoteke koristeći vlastitu implementaciju podsistema 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 informacija, druga je zatvara, a treća dodaje niz poruka koja joj se prosljeđuje kao parametar za ovu datoteku. Konceptualno, ovo rješenje podsjeća na syslog programsko sučelje u Linuxu.
Koristite funkcije fopen i fclose u standardnoj biblioteci C za otvaranje i zatvaranje datoteke. Nazovite fwrite da biste dodali informacije 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.