Бүгінгі таңда көптеген қосымшалар мен жүйелік қосымшалар журналдар деп аталатын арнайы журналдарда жұмыс процесі, қателер мен ақаулар туралы ақпаратты мезгіл-мезгіл сақтайды. Жалпы мақсаттағы операциялық жүйелердің көпшілігі стандартты бағдарламалау интерфейсін қолданып журналдар жазуға мүмкіндік беретін қызметтерді ұсынады.
Қажетті
- - C компиляторы;
- - Windows Platform SDK;
- - glibc пакетін әзірлеу.
Нұсқаулық
1-қадам
Қолданбадан жүйелік журналға журналдар жазу үшін қолдау қосыңыз, Windows тобының операциялық жүйелерінде жұмыс істеуге арналған.
Бағдарламаны оқиғалар көзі ретінде тіркеу үшін RegisterEventSource API функциясын, ReportEvent функциясын журналға жазба қосу үшін және DeregisterEventSource функциясын RegisterEventSource қайтарған дескрипторды жабу үшін қолданыңыз.
Қосымшаны инициализациялау кезінде RegistEventSource-ке қоңырау шалу және қайтарылған дескрипторды үнемі сақтау қажет, сонда журналдағы жазбалар бағдарламаның әр түрлі жерлерінен орналастырылуы мүмкін. Windows журналына жазудың қарапайым мысалы келесідей болуы мүмкін:
HANDLE hLog = RegisterEventSource (NULL, «MyApplicationName»);
егер (hLog! = NULL)
{
егер (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 мекен-жайы бойынша табуға болады. Сонымен қатар, бағдарламаның орындалатын модулі туралы кейбір деректерді жүйелік тізілімге енгізу керек және белгілі бір форматтағы ресурстарды модульдің өзіне немесе үшінші тараптың динамикалық кітапханасына қосу қажет. Іс-шаралар журналы қызметі үшін тіркеу кілттері туралы қосымша ақпаратты https://msdn.microsoft.com/en-us/library/windows/desktop/aa363661%28v=vs.85%29.aspx сайтынан қараңыз.
2-қадам
Linux үйлесімді операциялық жүйелеріне кіруді әдетте syslog демонтын қолдану арқылы жасауға болады. Бұл қызметте функциялар жиынтығы түріндегі қолданбалы деңгейдегі интерфейс бар, оның декларациялары syslog.h тақырыптық файлында орналастырылған.
Бағдарламадан немесе кітапханадан syslog қызметіне байланыс жасау үшін openlog функциясын пайдаланыңыз. Хабарларды журналға енгізу үшін syslog немесе vsyslog функцияларын шақырыңыз. Оқиғаларды жазу аяқталғаннан кейін немесе қосымша шыққаннан кейін, қызметке қосылуды closelog функциясын шақыру арқылы жабыңыз. Сонымен қатар, сіз setlogmask функциясын пайдаланып белгілі бір басымдылықпен оқиға жазбаларын қосатын қоңырауларды елемеу үшін параметрлерді теңшей аласыз. Журналға хабарламалар жазудың мысалы келесідей болуы мүмкін:
openlog («MyApplication», LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
syslog (LOG_NOTICE, «MyApplication% dID идентификаторымен іске қосылды», getuid ());
syslog (LOG_INFO, «Ақпараттық хабарлама!»);
closelog ();
Syslog API функцияларының параметрлері туралы қосымша ақпарат алу үшін libc ақпаратының құжаттамасын қараңыз.
3-қадам
Оқиғалар сақталуының ішкі жүйесін енгізуді пайдаланып, еркін файлдарға журналдар жазыңыз. Бұл мәселенің қарапайым шешімдерінің бірі - ғаламдық ауқымда бірнеше функцияларды құру, олардың бірі белгілі бір атауы бар файлды қосымша ақпарат режимінде ашады, екіншісі оны жабады, үшіншісі оған берілген хабарламалар жолын қосады осы файлға параметр. Тұжырымдамалық тұрғыдан бұл шешім Linux-тағы syslog бағдарламалау интерфейсіне ұқсайды.
Файлды ашу және жабу үшін C стандартты кітапханасының fopen және fclose функцияларын пайдаланыңыз. Файлға ақпарат қосу үшін fwrite қоңырау шалыңыз. Сондай-ақ, платформаларға арналған функцияларды (мысалы, CreateFile Windows астында) және файлдармен жұмыс істеу функционалдығын жинайтын фреймворк объектілерінің әдістерін қолдануға болады.