Danes večina aplikacij in sistemskih aplikacij redno shranjuje informacije o procesu svojega dela, napakah in okvarah v posebne dnevnike, imenovane dnevniki. Večina splošnih operacijskih sistemov ponuja storitve, ki omogočajo pisanje dnevnikov s standardnim programskim vmesnikom.
Potrebno
- - prevajalnik C;
- - SDK za platformo Windows;
- - Razviti paket za glibc.
Navodila
Korak 1
V sistemski dnevnik dodajte podporo za zapisovanje dnevnikov iz vaše aplikacije, zasnovane za delovanje v operacijskih sistemih družine Windows.
S funkcijo API RegisterEventSource registrirajte aplikacijo kot vir dogodka, s funkcijo ReportEvent dodajte vnos v dnevnik in s funkcijo DeregisterEventSource zaprite ročaj, ki ga vrne RegisterEventSource.
Med inicializacijo aplikacije je smiselno poklicati RegisterEventSource in ves čas shraniti vrnjeni deskriptor, tako da lahko vnose v dnevnik postavljate z različnih mest v programu. Najpreprostejši primer zapisovanja v dnevnik Windows je lahko videti tako:
HANDLE hLog = RegisterEventSource (NULL, "MyApplicationName");
če (hLog! = NULL)
{
if (ReportEvent (hLog, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, "Besedilo sporočila / 0", NULL))
{
// dogodek je bil uspešno zabeležen
}
DeregisterEventSource (hLog);
}
Več podrobnosti o semantiki funkcije ReportEvent najdete v MSDN na naslovu https://msdn.microsoft.com/en-us/library/windows/desktop/aa363679%28v=vs.85%29.aspx. Poleg tega morate v sistemski register vnesti nekaj podatkov o izvršljivem modulu aplikacije in modulu ali neodvisni dinamični knjižnici dodati vire v določeni obliki. Če želite več informacij o registrskih ključih storitve dnevnika dogodkov, glejte
2. korak
Prijava v operacijske sisteme, združljive z Linuxom, je običajno možna s pomočjo demona syslog. Ta storitev ima vmesnik na ravni aplikacije v obliki nabora funkcij, katerih izjave so nameščene v datoteki glave syslog.h.
S funkcijo odprtega dnevnika ustvarite povezavo do storitve syslog iz aplikacije ali knjižnice. Pokličite funkciji syslog ali vsyslog, da sporočila shranite v dnevnik. Po koncu snemanja dogodkov ali ko aplikacija zapre program, prekličite povezavo s storitvijo, tako da pokličete funkcijo closelog. Poleg tega lahko nastavitve nastavite tako, da prezrete klice, ki dodajo zapise dogodkov s posebno prednostjo s pomočjo funkcije setlogmask. Primer pisanja sporočil v dnevnik je lahko videti tako:
openlog ("MyApplication", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
syslog (LOG_NOTICE, "MyApplication se zažene s PID% d", getuid ());
syslog (LOG_INFO, "Informativno sporočilo!");
closelog ();
Za več informacij o parametrih funkcij API-ja syslog glejte dokumentacijo o informacijah libc.
3. korak
Dnevnike zapisujte v poljubne datoteke z lastno izvedbo podsistema trajanja dogodkov. Ena najpreprostejših rešitev te težave je ustvariti več funkcij v globalnem obsegu, od katerih ena odpre datoteko z določenim imenom v načinu dodajanja informacij, druga jo zapre in tretja doda niz sporočil, ki ji je poslan kot parameter te datoteke. Konceptualno je ta rešitev podobna programskemu vmesniku syslog v Linuxu.
Za odpiranje in zapiranje datoteke uporabite funkciji fopen in fclose v standardni knjižnici C. Pokličite fwrite, da v datoteko dodate podatke. Uporabite lahko tudi funkcije, specifične za platformo (na primer CreateFile v sistemu Windows), in metode predmetov uporabljenih okvirov, ki zajemajo funkcionalnost dela z datotekami.