Днес повечето приложения и системни приложения периодично записват информация за процеса на тяхната работа, грешки и откази в специални регистрационни файлове, наречени регистрационни файлове. Повечето операционни системи с общо предназначение предоставят услуги, които ви позволяват да пишете дневници, използвайки стандартен интерфейс за програмиране.
Необходимо
- - C компилатор;
- - Windows Platform SDK;
- - Разработване на пакет за glibc.
Инструкции
Етап 1
Добавете поддръжка за писане на дневници в системния дневник от вашето приложение, предназначено да работи под операционни системи от семейството на Windows.
Използвайте функцията RegisterEventSource API, за да регистрирате приложението като източник на събитие, функцията ReportEvent за добавяне на запис в дневника и функцията DeregisterEventSource, за да затворите манипулатора, върнат от RegisterEventSource.
Има смисъл да се обадите на RegisterEventSource по време на инициализацията на приложението и да запазвате върнатия дескриптор през цялото време, така че записите в дневника да могат да се поставят от различни места в програмата. Най-простият пример за писане в дневника на Windows може да изглежда така:
HANDLE hLog = RegisterEventSource (NULL, "MyApplicationName");
ако (hLog! = NULL)
{
if (ReportEvent (hLog, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, "Текст на съобщението / 0", NULL))
{
// събитието беше регистрирано успешно
}
DeregisterEventSource (hLog);
}
Повече подробности за семантиката на функцията ReportEvent можете да намерите в MSDN на адрес https://msdn.microsoft.com/en-us/library/windows/desktop/aa363679%28v=vs.85%29.aspx. Освен това трябва да поставите някои данни за изпълнимия модул на приложението в системния регистър и да добавите ресурси в определен формат към самия модул или динамична библиотека на трета страна. За повече информация относно ключовете на системния регистър за услугата за регистрация на събития вижте
Стъпка 2
Влизането в Linux-съвместими операционни системи обикновено може да се извършва с помощта на демона syslog. Тази услуга има интерфейс на ниво приложение под формата на набор от функции, декларациите на които се поставят в заглавния файл syslog.h.
Използвайте функцията openlog, за да създадете връзка към услугата syslog от приложение или библиотека. Извикайте функциите syslog или vsyslog, за да поставите съобщения в дневника. След края на записаните събития или когато приложението излезе, затворете връзката с услугата, като извикате функцията за затваряне. Освен това можете да конфигурирате настройките да игнорират обажданията, които добавят записи на събития с определен приоритет, като използвате функцията setlogmask. Пример за писане на съобщения в дневника може да изглежда така:
отворен дневник („MyApplication“, LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
syslog (LOG_NOTICE, "MyApplication се стартира с PID% d", getuid ());
syslog (LOG_INFO, "Информационно съобщение!");
близък дневник ();
За повече информация относно параметрите на функциите на API на syslog, вижте libc info документацията.
Стъпка 3
Напишете дневници в произволни файлове, като използвате собствената си реализация на подсистемата за съхранение на събитията. Едно от най-простите решения на този проблем е да се създадат няколко функции в глобалния обхват, една от които отваря файл с конкретно име в режим на добавяне на информация, втората го затваря, а третата добавя низ от съобщение, предаден към него като параметър към този файл. Концептуално това решение прилича на интерфейса за програмиране на syslog в Linux.
Използвайте функциите fopen и fclose на стандартната библиотека C, за да отворите и затворите файл, съответно. Обадете се на fwrite, за да добавите информация към файла. Можете също да използвате специфични за платформата функции (например CreateFile под Windows) и методи на обекти от използваните рамки, които капсулират функционалността на работа с файлове.