Qanday Qilib Jurnallarni Yozish Kerak

Mundarija:

Qanday Qilib Jurnallarni Yozish Kerak
Qanday Qilib Jurnallarni Yozish Kerak

Video: Qanday Qilib Jurnallarni Yozish Kerak

Video: Qanday Qilib Jurnallarni Yozish Kerak
Video: Qanday qilib har qanday narsani har qanday odamga sotish mumkin | Jo Jirard 2024, May
Anonim

Bugungi kunda, ko'pgina dastur va tizim dasturlari vaqti-vaqti bilan ish jarayoni, xatolar va nosozliklar to'g'risida ma'lumotlarni jurnallar deb nomlangan maxsus jurnallarda saqlaydi. Ko'pgina umumiy operatsion tizimlar standart dasturlash interfeysi yordamida jurnallarni yozish imkonini beradigan xizmatlarni taqdim etadi.

Qanday qilib jurnallarni yozish kerak
Qanday qilib jurnallarni yozish kerak

Kerakli

  • - C kompilyatori;
  • - Windows Platform SDK;
  • - glibc uchun paket ishlab chiqish.

Ko'rsatmalar

1-qadam

Windows oilasining operatsion tizimlarida ishlashga mo'ljallangan ilovangizdan tizim jurnaliga jurnallarni yozish uchun yordam qo'shing.

Ilovani voqea manbai sifatida ro'yxatdan o'tkazish uchun RegisterEventSource API funktsiyasidan, jurnalga yozuv qo'shish uchun ReportEvent funktsiyasidan va RegisterEventSource tomonidan qaytarilgan dastani yopish uchun DeregisterEventSource funktsiyasidan foydalaning.

Ilovani ishga tushirish paytida RegistEventSource-ga qo'ng'iroq qilish va qaytgan identifikatorni har doim saqlab qo'yish mantiqan to'g'ri keladi, shunda jurnaldagi yozuvlar dasturning turli joylaridan joylashtirilishi mumkin. Windows jurnaliga yozishning eng oddiy misoli quyidagicha ko'rinishi mumkin:

HANDLE hLog = RegisterEventSource (NULL, "MyApplicationName");

agar (hLog! = NULL)

{

agar (ReportEvent (hLog, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, "Xabar matni / 0", NULL))

{

// voqea muvaffaqiyatli qayd etildi

}

DeregisterEventSource (hLog);

}

ReportEvent funktsiyasi semantikasi haqida batafsil ma'lumotni MSDN-da https://msdn.microsoft.com/en-us/library/windows/desktop/aa363679%28v=vs.85%29.aspx manzilidan olishingiz mumkin. Bundan tashqari, siz dasturning bajariladigan moduli haqida ba'zi ma'lumotlarni tizim registriga kiritishingiz va ma'lum bir formatdagi resurslarni modulning o'ziga yoki uchinchi tomon dinamik kutubxonasiga qo'shishingiz kerak. Voqealar jurnali xizmati uchun ro'yxatga olish kitobi kalitlari haqida qo'shimcha ma'lumot olish uchun https://msdn.microsoft.com/en-us/library/windows/desktop/aa363661%28v=vs.85%29.aspx ga qarang.

2-qadam

Linux-ga mos keladigan operatsion tizimlarda tizimga kirish odatda syslog demoni yordamida amalga oshirilishi mumkin. Ushbu xizmat funktsiyalar to'plami ko'rinishidagi dastur darajasidagi interfeysga ega, ularning deklaratsiyalari syslog.h sarlavha faylida joylashtirilgan.

Ilova yoki kutubxonadan syslog xizmatiga ulanish yaratish uchun openlog funktsiyasidan foydalaning. Xabarlarni jurnalga qo'yish uchun syslog yoki vsyslog funktsiyalariga qo'ng'iroq qiling. Voqealarni yozib olish tugagandan so'ng yoki dastur chiqqandan so'ng, xizmatga ulanishni closelog funktsiyasini chaqirib yoping. Bundan tashqari, setlogmask funktsiyasidan foydalangan holda ma'lum bir ustuvorlikka ega voqea yozuvlarini qo'shadigan qo'ng'iroqlarni e'tiborsiz qoldiradigan sozlamalarni sozlashingiz mumkin. Xabarlarni jurnalga yozishning misoli quyidagicha ko'rinishi mumkin:

openlog ("MyApplication", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);

syslog (LOG_NOTICE, "MyApplication PID% d bilan ishga tushirildi", getuid ());

syslog (LOG_INFO, "Axborot xabari!");

closelog ();

Syslog API funktsiyalari parametrlari haqida qo'shimcha ma'lumot olish uchun libc info hujjatlariga qarang.

3-qadam

Hodisalarning davomiyligi quyi tizimining o'z dasturidan foydalanib, o'zboshimchalik bilan fayllarga jurnallarni yozing. Ushbu muammoning eng sodda echimlaridan biri bu global miqyosda bir nechta funktsiyalarni yaratishdir, ulardan biri ma'lum bir ismga ega faylni qo'shimcha ma'lumot rejimida ochadi, ikkinchisi uni yopadi, uchinchisi unga uzatilgan xabar qatorini qo'shadi ushbu fayl uchun parametr. Kontseptual ravishda ushbu echim Linuxdagi syslog dasturlash interfeysiga o'xshaydi.

Faylni ochish va yopish uchun navbati bilan C standart kutubxonasining fopen va fclose funktsiyalaridan foydalaning. Faylga ma'lumot qo'shish uchun fwrite-ga qo'ng'iroq qiling. Shuningdek, siz platformaga xos funktsiyalardan foydalanishingiz mumkin (masalan, Windows ostida CreateFile) va fayllar bilan ishlashning funktsional imkoniyatlarini o'z ichiga olgan ramkalar moslamalarining usullari.

Tavsiya: