Өнөө үед ихэнх програмууд болон системийн програмууд нь ажлын явц, алдаа, дутагдлын тухай мэдээллийг үе үе бүртгэл гэж нэрлэдэг тусгай бүртгэлд хадгалдаг. Ихэнх ерөнхий зориулалтын үйлдлийн системүүд нь стандарт програмчлалын интерфэйсийг ашиглан бүртгэл бичих боломжийг олгодог үйлчилгээ үзүүлдэг.
Шаардлагатай
- - С хөрвүүлэгч;
- - Windows платформ SDK;
- - glibc-д зориулсан багц боловсруулах.
Зааварчилгаа
1-р алхам
Windows гэр бүлийн үйлдлийн систем дээр ажиллах зориулалттай програмаас системийн бүртгэлд бүртгэл бичихэд дэмжлэг нэмнэ үү.
Аппликейшнийг үйл явдлын эх сурвалж болгон бүртгүүлэхийн тулд RegisterEventSource API функцийг, ReportEvent функцийг бүртгэлд оруулга нэмэх, DeregisterEventSource функцийг ашиглан RegistEventSource-ийн буцааж өгсөн бариулыг ашиглана уу.
Програмыг эхлүүлэх явцад RegistEventSource руу залгаж, буцаж ирсэн дескрипторыг байнга хадгалах нь зүйтэй бөгөөд ингэснээр бүртгэл дэх оруулгуудыг програмын өөр өөр газраас байрлуулах боломжтой болно. Windows бүртгэлд бичих хамгийн энгийн жишээ дараах байдалтай байж магадгүй юм.
HANDLE hLog = RegisterEventSource (NULL, "MyApplicationName");
хэрэв (hLog! = NULL)
{
хэрэв (ReportEvent (hLog, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, "Message text / 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
Линукс-тэй нийцтэй үйлдлийн системийн бүртгэлийг ихэвчлэн syslog демон ашиглан хийж болно. Энэхүү үйлчилгээ нь програмын түвшний интерфейстэй бөгөөд багц функц хэлбэртэй бөгөөд тэдгээрийн мэдэгдлийг syslog.h толгой файлд байрлуулсан болно.
Аппликейшн эсвэл номын сангаас syslog үйлчилгээнд холболт үүсгэхийн тулд openlog функцийг ашиглана уу. Бүртгэлд мессеж оруулахын тулд syslog эсвэл vsyslog функц руу залгаарай. Үйл явдлуудыг тэмдэглэж дууссаны дараа эсвэл програм дууссаны дараа хаах функцийг дуудаж үйлчилгээнд холбогдсон холболтыг хаах хэрэгтэй. Нэмж дурдахад та setlogmask функцийг ашиглан тодорхой тэргүүлэх ач холбогдол бүхий үйл явдлын бичлэг нэмж оруулсан дуудлагыг үл тоомсорлох тохиргоог тохируулж болно. Бүртгэлд мессеж бичих жишээ нь дараах байдалтай байж магадгүй юм.
openlog ("MyApplication", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
syslog (LOG_NOTICE, "MyApplication-ийг PID% d-ээр эхлүүлсэн", getuid ());
syslog (LOG_INFO, "Мэдээллийн зурвас!");
closelog ();
Syslog API функцын параметрүүдийн талаар илүү их мэдээлэл авахыг хүсвэл libc мэдээллийн баримт бичгээс үзнэ үү.
Алхам 3
Үйл явдлын тогтвортой байдлын дэд системийг өөрийн хэрэгжилтийг ашиглан дурын файлуудад бүртгэл бичих. Энэ асуудлыг шийдэх хамгийн энгийн шийдлүүдийн нэг бол дэлхийн хэмжээнд хэд хэдэн функцуудыг бий болгох явдал бөгөөд тэдгээрийн нэг нь тодорхой нэр бүхий файлыг add information горимд нээж, хоёр дахь нь хааж, гурав дахь нь түүнд дамжуулсан мессежийн мөрийг нэмж оруулах явдал юм. энэ файлын параметр. Энэхүү шийдэл нь Линукс дахь syslog програмчлалын интерфэйстэй төстэй юм.
Файлыг нээж хаахын тулд C стандарт номын сангийн fopen ба fclose функцийг ашиглана уу. Файлд мэдээлэл нэмэхийн тулд fwrite руу залгана уу. Та платформд зориулагдсан функцуудыг ашиглаж болно (жишээлбэл Windows дээр CreateFile гэх мэт) болон файлуудтай ажиллах ажиллагааг багтаасан хүрээний объектуудын аргуудыг ашиглаж болно.