Dnes většina aplikací a systémových aplikací pravidelně ukládá informace o procesu své práce, chybách a poruchách do speciálních protokolů nazývaných protokoly. Většina operačních systémů pro všeobecné účely poskytuje služby, které vám umožňují psát protokoly pomocí standardního programovacího rozhraní.
Nezbytné
- - kompilátor C;
- - Windows Platform SDK;
- - Vytvořte balíček pro glibc.
Instrukce
Krok 1
Přidejte podporu pro zápis protokolů do systémového protokolu z aplikace navržené pro práci v operačních systémech rodiny Windows.
Pomocí funkce RegisterEventSource API zaregistrujte aplikaci jako zdroj události, funkcí ReportEvent přidejte položku do protokolu a funkcí DeregisterEventSource zavřete popisovač vrácený RegisterEventSource.
Dává smysl zavolat RegisterEventSource během inicializace aplikace a neustále ukládat vrácený deskriptor, takže položky v protokolu lze umístit z různých míst v programu. Nejjednodušší příklad zápisu do protokolu Windows může vypadat takto:
HANDLE hLog = RegisterEventSource (NULL, "MyApplicationName");
if (hLog! = NULL)
{
if (ReportEvent (hLog, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, "Text zprávy / 0", NULL))
{
// událost byla úspěšně zaznamenána
}
DeregisterEventSource (hLog);
}
Více podrobností o sémantice funkce ReportEvent najdete na webu MSDN na adrese https://msdn.microsoft.com/en-us/library/windows/desktop/aa363679%28v=vs.85%29.aspx. Kromě toho musíte do systémového registru vložit některá data o spustitelném modulu aplikace a přidat prostředky v určitém formátu do samotného modulu nebo dynamické knihovny jiného výrobce. Další informace o klíčích registru pro službu protokolu událostí najdete na adrese
Krok 2
Přihlášení v operačních systémech kompatibilních s Linuxem lze obvykle provést pomocí démona syslog. Tato služba má rozhraní na úrovni aplikace ve formě sady funkcí, jejichž deklarace jsou umístěny v hlavičkovém souboru syslog.h.
Pomocí funkce openlog vytvořte připojení ke službě syslog z aplikace nebo knihovny. Voláním funkcí syslog nebo vsyslog vkládejte zprávy do protokolu. Po skončení nahrávání událostí nebo při ukončení aplikace ukončete připojení ke službě voláním funkce closelog. Kromě toho můžete nakonfigurovat nastavení tak, aby ignorovala volání, která přidávají záznamy událostí se specifickou prioritou, pomocí funkce setlogmask. Příklad psaní zpráv do protokolu může vypadat takto:
openlog ("MyApplication", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
syslog (LOG_NOTICE, "MyApplication je spuštěn s PID% d", getuid ());
syslog (LOG_INFO, "Informační zpráva!");
closelog ();
Další informace o parametrech funkcí API syslog najdete v dokumentaci k libc info.
Krok 3
Zápisy protokolů do libovolných souborů pomocí vlastní implementace subsystému vytrvalosti událostí. Jedním z nejjednodušších řešení tohoto problému je vytvoření několika funkcí v globálním rozsahu, z nichž jedna otevře soubor se specifickým názvem v režimu přidání informací, druhá jej zavře a třetí přidá řetězec zprávy, který mu byl předán jako parametr tohoto souboru. Koncepčně se toto řešení podobá programovacímu rozhraní syslog v systému Linux.
K otevření a zavření souboru použijte funkce fopen a fclose standardní knihovny C. Voláním fwrite přidáte informace do souboru. Můžete také použít funkce specifické pro platformu (například CreateFile v systému Windows) a metody objektů použitých rámců, které zapouzdřují funkčnost práce se soubory.