დღეს, პროგრამებისა და სისტემების უმეტესობა პერიოდულად ინახავს ინფორმაციას მათი მუშაობის პროცესის, შეცდომებისა და შეცდომების შესახებ სპეციალურ ჟურნალებში, სახელწოდებით ჟურნალები. ზოგადი დანიშნულების ოპერაციული სისტემების უმეტესობა გთავაზობთ მომსახურებას, რომლის საშუალებითაც შეგიძლიათ დაწეროთ ჟურნალები სტანდარტული პროგრამირების ინტერფეისის საშუალებით.
აუცილებელია
- - 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 daemon– ის გამოყენებით. ამ სერვისს აქვს პროგრამის დონის ინტერფეისი ფუნქციების ერთობლიობის სახით, რომელთა დეკლარაციები განთავსებულია syslog.h სათაურის ფაილში.
გამოიყენეთ openlog ფუნქცია, რომ შექმნათ კავშირი syslog სერვისთან პროგრამიდან ან ბიბლიოთეკიდან. დარეკეთ syslog– ის ან vsyslog– ის ფუნქციებზე, რომ შეტყობინებები შეიტანოთ ჟურნალში. მოვლენების ჩაწერის დასრულების შემდეგ ან აპლიკაციის გამოსვლის შემდეგ, დახურეთ კავშირი სერვისთან, დახურვის ფუნქციის გამოძახებით გარდა ამისა, პარამეტრების კონფიგურაცია შეგიძლიათ ზონების უგულებელყოფაზე, რომლებიც ღონისძიების ჩანაწერებს ამატებენ კონკრეტული პრიორიტეტით, setlogmask ფუნქციის გამოყენებით. ჟურნალში შეტყობინებების წერის მაგალითი შეიძლება ასე გამოიყურებოდეს:
openlog ("MyApplication", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
syslog (LOG_NOTICE, "MyApplication იწყება PID% d" - ით, getuid ());
syslog (LOG_INFO, "ინფორმაციული შეტყობინება!");
კლოლოლოგი ();
Syslog API ფუნქციების პარამეტრების შესახებ დამატებითი ინფორმაციისთვის იხილეთ libc info დოკუმენტაცია.
ნაბიჯი 3
დაწერე ჟურნალები თვითნებურ ფაილებს, ღონისძიების არსებითი ქვესისტემის საკუთარი განხორციელების გამოყენებით. ამ პრობლემის ერთ-ერთი მარტივი გამოსავალია გლობალური მასშტაბით რამდენიმე ფუნქციის შექმნა, რომელთაგან ერთი გახსნის ფაილს სპეციფიკური სახელით ინფორმაციის დამატების რეჟიმში, მეორე ახურავს მას, ხოლო მესამე ამატებს მასზე გაგზავნილ სტრიქონს, როგორც ამ ფაილის პარამეტრი. კონცეპტუალურად, ეს გამოსავალი ჰგავს syslog პროგრამირების ინტერფეისს Linux- ში.
გამოიყენეთ C სტანდარტული ბიბლიოთეკის fopen და fclose ფუნქციები, შესაბამისად გახსენით და დახურეთ ფაილი. დარეკეთ fwrite- ზე ფაილში ინფორმაციის დასამატებლად. ასევე შეგიძლიათ გამოიყენოთ პლატფორმისთვის დამახასიათებელი ფუნქციები (მაგალითად, CreateFile Windows– ის ქვეშ) და გამოყენებული ჩარჩოების ობიექტების მეთოდები, რომლებიც ფაილებთან მუშაობის ფუნქციურობას ათავსებს.