I dag lagrer de fleste applikasjons- og systemapplikasjoner med jevne mellomrom informasjon om prosessen med arbeidet, feil og feil i spesielle logger som kalles logger. De fleste generelle operativsystemer tilbyr tjenester som lar deg skrive logger ved hjelp av et standard programmeringsgrensesnitt.
Nødvendig
- - C kompilator;
- - Windows Platform SDK;
- - Utvikle pakke for glibc.
Bruksanvisning
Trinn 1
Legg til støtte for å skrive logger til systemloggen fra applikasjonen din designet for å fungere under operativsystemer i Windows-familien.
Bruk RegisterEventSource API-funksjonen til å registrere applikasjonen som en hendelseskilde, ReportEvent-funksjonen for å legge til en oppføring i loggen, og DeregisterEventSource-funksjonen for å lukke håndtaket som returneres av RegisterEventSource.
Det er fornuftig å ringe til RegisterEventSource under initialiseringen av applikasjonen og lagre den returnerte deskriptoren hele tiden, slik at oppføringer i loggen kan plasseres fra forskjellige steder i programmet. Det enkleste eksemplet på å skrive til Windows-loggen kan se slik ut:
HANDLE hLog = RegisterEventSource (NULL, "MyApplicationName");
hvis (hLog! = NULL)
{
hvis (ReportEvent (hLog, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, "Meldingstekst / 0", NULL))
{
// hendelsen ble logget
}
DeregisterEventSource (hLog);
}
Mer informasjon om semantikken til ReportEvent-funksjonen finner du i MSDN på https://msdn.microsoft.com/en-us/library/windows/desktop/aa363679%28v=vs.85%29.aspx. I tillegg må du legge inn noen data om programmets kjørbare modul i systemregisteret, og legge til ressurser i et bestemt format til selve modulen eller et dynamisk tredjepartsbibliotek. For mer informasjon om registernøklene for hendelsesloggtjenesten, se
Steg 2
Logging på Linux-kompatible operativsystemer kan vanligvis gjøres ved hjelp av syslog-demonen. Denne tjenesten har et applikasjonsnivågrensesnitt i form av et sett med funksjoner, hvis erklæringer er plassert i syslog.h-headerfilen.
Bruk openlog-funksjonen til å opprette en forbindelse til syslog-tjenesten fra et program eller et bibliotek. Ring syslog- eller vsyslog-funksjonene for å sette meldinger i loggen. Etter avslutningen av opptakshendelsene eller når applikasjonen avsluttes, lukker du forbindelsen til tjenesten ved å ringe lukkingsloggfunksjonen. I tillegg kan du konfigurere innstillingene for å ignorere anrop som legger til hendelsesposter med en spesifikk prioritet ved hjelp av setlogmask-funksjonen. Et eksempel på å skrive meldinger til loggen kan se slik ut:
openlog ("MyApplication", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
syslog (LOG_NOTICE, "MyApplication er lansert med PID% d", getuid ());
syslog (LOG_INFO, "Informasjonsmelding!");
closelog ();
For mer informasjon om parametrene til syslog API-funksjonene, se dokumentasjonen for libc-informasjon.
Trinn 3
Skriv logger til vilkårlige filer ved å bruke din egen implementering av delsystemet hendelses persistens. En av de enkleste løsningene på dette problemet er å opprette flere funksjoner i det globale omfanget, hvorav den ene åpner en fil med et spesifikt navn i legg til informasjonsmodus, den andre lukker den, og den tredje legger til en meldingsstreng sendt til den som en parameter til denne filen. Konseptuelt ligner denne løsningen syslog programmeringsgrensesnittet i Linux.
Bruk fopen- og fclose-funksjonene til C-standardbiblioteket for å åpne og lukke en fil. Ring fwrite for å legge til informasjon i filen. Du kan også bruke plattformsspesifikke funksjoner (for eksempel CreateFile under Windows) og metoder for objekter fra rammeverkene som brukes som innkapsler funksjonaliteten til å jobbe med filer.