Ma a legtöbb alkalmazás és rendszeralkalmazás időszakonként információkat tárol a munkájuk folyamatáról, a hibákról és a hibákról a speciális naplókban. A legtöbb általános célú operációs rendszer olyan szolgáltatásokat nyújt, amelyek lehetővé teszik a naplók írását egy szabványos programozási felület segítségével.
Szükséges
- - C fordító;
- - Windows Platform SDK;
- - Csomag fejlesztése a glibc számára.
Utasítás
1. lépés
Adjon hozzá támogatást a naplók írásához a rendszernaplóba az alkalmazásból, amelyet úgy terveztek, hogy a Windows család operációs rendszerei alatt működjön.
A RegisterEventSource API függvény használatával regisztrálja az alkalmazást eseményforrásként, a ReportEvent függvényt a bejegyzés hozzáadásához a naplóba, a DeregisterEventSource függvényt pedig a RegisterEventSource által visszaadott fogantyú bezárásához.
Van értelme meghívni a RegisterEventSource-t az alkalmazás inicializálása során, és folyamatosan menteni a visszaküldött leírót, hogy a naplóbejegyzéseket a program különböző helyeiről lehessen elhelyezni. A Windows naplóba írás legegyszerűbb példája így nézhet ki:
HANDLE hLog = RegisterEventSource (NULL, "MyApplicationName");
ha (hLog! = NULL)
{
if (ReportEvent (hLog, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, "Üzenet szövege / 0", NULL))
{
// esemény sikeresen naplózva
}
DeregisterEventSource (hLog);
}
A ReportEvent függvény szemantikájáról további részletek az MSDN-ben találhatók: https://msdn.microsoft.com/en-us/library/windows/desktop/aa363679%28v=vs.85%29.aspx. Ezenkívül adnia kell néhány adatot az alkalmazás futtatható moduljáról a rendszerleíró adatbázisban, és hozzá kell adnia egy adott formátumú erőforrásokat magához a modulhoz vagy egy külső dinamikus könyvtárhoz. Az eseménynapló szolgáltatás regisztrációs kulcsairól további információt a https://msdn.microsoft.com/en-us/library/windows/desktop/aa363661%28v=vs.85%29.aspx webhelyen talál.
2. lépés
A Linux-kompatibilis operációs rendszereken történő bejelentkezés általában a syslog démon segítségével történhet. Ez a szolgáltatás egy alkalmazásszintű interfésszel rendelkezik, függvénykészlet formájában, amelynek deklarációi a syslog.h fejlécfájlba kerülnek.
Az openlog funkció segítségével kapcsolatot hozhat létre a syslog szolgáltatással egy alkalmazásból vagy könyvtárból. Hívja meg a syslog vagy vsyslog függvényeket, ha üzeneteket szeretne a naplóba tenni. Az események rögzítésének befejezése után, vagy amikor az alkalmazás kilép, zárja a kapcsolatot a szolgáltatással a closelog funkció meghívásával. Ezenkívül a setlogmask függvény segítségével konfigurálhatja a beállításokat, hogy figyelmen kívül hagyja azokat a hívásokat, amelyek eseményrekordokat adnak meg egy adott prioritással. Az üzenetek naplóba írásának példája így nézhet ki:
openlog ("MyApplication", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
syslog (LOG_NOTICE, "A MyApplication elindul% PID azonosítóval", getuid ());
syslog (LOG_INFO, "Információs üzenet!");
closelog ();
A syslog API függvényeinek paramétereiről további információt a libc információ dokumentációjában talál.
3. lépés
Írjon naplókat tetszőleges fájlokba az eseménymegmaradás alrendszer saját megvalósításával. Az egyik legegyszerűbb megoldás erre a problémára az, hogy több függvényt hoz létre a globális hatókörben, amelyek közül az egyik megnyit egy meghatározott nevű fájlt az információ hozzáadása módban, a másik bezárja, a harmadik pedig hozzáad egy üzenetet, paraméter a fájlhoz. Fogalmilag ez a megoldás hasonlít a syslog programozási felületre a Linuxban.
A fájl megnyitásához és bezárásához használja a C szabványos könyvtár fopen és fclose függvényeit. Hívja az fwrite parancsot információk hozzáadásához a fájlhoz. Használhat platformspecifikus funkciókat (például a CreateFile Windows alatt) és a használt keretrendszer objektumainak olyan módszereit is, amelyek a fájlokkal való munka funkcionalitását foglalják magukban.