I dag gemmer de fleste applikations- og systemapplikationer periodisk oplysninger om processen med deres arbejde, fejl og fejl i specielle logfiler kaldet logfiler. De fleste generelle operativsystemer leverer tjenester, der giver dig mulighed for at skrive logfiler ved hjælp af en standard programmeringsgrænseflade.
Nødvendig
- - C-kompilator;
- - Windows Platform SDK;
- - Udvikl pakke til glibc.
Instruktioner
Trin 1
Tilføj support til at skrive logfiler til systemloggen fra din applikation designet til at arbejde under operativsystemer i Windows-familien.
Brug RegisterEventSource API-funktionen til at registrere applikationen som en hændelseskilde, ReportEvent-funktionen til at tilføje en post til loggen og DeregisterEventSource-funktionen til at lukke håndtaget, der returneres af RegisterEventSource.
Det giver mening at ringe til RegisterEventSource under initialiseringen af applikationen og gemme den returnerede deskriptor hele tiden, så poster i loggen kan placeres fra forskellige steder i programmet. Det enkleste eksempel på at skrive til Windows-loggen kan se sådan ud:
HANDLE hLog = RegisterEventSource (NULL, "MyApplicationName");
hvis (hLog! = NULL)
{
hvis (ReportEvent (hLog, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, "Beskedtekst / 0", NULL))
{
// begivenheden blev logget
}
DeregisterEventSource (hLog);
}
Flere detaljer om semantikken for ReportEvent-funktionen findes i MSDN på https://msdn.microsoft.com/en-us/library/windows/desktop/aa363679%28v=vs.85%29.aspx. Derudover skal du placere nogle data om programmets eksekverbare modul i systemregistret og tilføje ressourcer i et specifikt format til selve modulet eller et dynamisk bibliotek fra tredjepart. Du kan finde flere oplysninger om registreringsnøglerne til hændelseslogtjenesten på
Trin 2
Logning på Linux-kompatible operativsystemer kan normalt ske ved hjælp af syslog-dæmonen. Denne service har en applikationsniveau-interface i form af et sæt funktioner, hvis erklæringer er placeret i syslog.h-headerfilen.
Brug openlog-funktionen til at oprette en forbindelse til syslog-tjenesten fra et program eller et bibliotek. Ring til syslog- eller vsyslog-funktionerne for at sætte meddelelser i loggen. Efter afslutningen af optagelseshændelser, eller når applikationen afsluttes, skal du lukke forbindelsen til tjenesten ved at ringe til closelog-funktionen. Derudover kan du konfigurere indstillingerne til at ignorere opkald, der tilføjer hændelsesregistreringer med en bestemt prioritet ved hjælp af setlogmask-funktionen. Et eksempel på at skrive meddelelser til loggen kan se sådan ud:
openlog ("MyApplication", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
syslog (LOG_NOTICE, "MyApplication er lanceret med PID% d", getuid ());
syslog (LOG_INFO, "Informationsmeddelelse!");
closelog ();
For yderligere oplysninger om parametrene for syslog API-funktionerne, se libc info-dokumentationen.
Trin 3
Skriv logfiler til vilkårlige filer ved hjælp af din egen implementering af delsystemet begivenhedsudholdenhed. En af de enkleste løsninger på dette problem er at oprette flere funktioner i det globale omfang, hvoraf den ene åbner en fil med et specifikt navn i tilstanden Tilføj information, den anden lukker den, og den tredje tilføjer en meddelelsesstreng sendt til den som en parameter til denne fil. Konceptuelt ligner denne løsning syslog-programmeringsgrænsefladen i Linux.
Brug fopen- og fclose-funktionerne i C-standardbiblioteket til henholdsvis at åbne og lukke en fil. Ring til fwrite for at tilføje oplysninger til filen. Du kan også bruge platformsspecifikke funktioner (for eksempel CreateFile under Windows) og metoder til objekter fra de anvendte rammer, der indkapsler funktionaliteten ved at arbejde med filer.