اليوم ، تحفظ معظم تطبيقات النظام والتطبيقات بشكل دوري معلومات حول عملية عملها والأخطاء والفشل في سجلات خاصة تسمى السجلات. توفر معظم أنظمة التشغيل ذات الأغراض العامة خدمات تتيح لك كتابة السجلات باستخدام واجهة برمجة قياسية.
ضروري
- - مترجم C
- - Windows Platform SDK ؛
- - تطوير حزمة لـ glibc.
تعليمات
الخطوة 1
أضف دعمًا لكتابة السجلات إلى سجل النظام من تطبيقك المصمم للعمل تحت أنظمة تشغيل عائلة Windows.
استخدم الدالة RegisterEventSource API لتسجيل التطبيق كمصدر حدث ، والدالة ReportEvent لإضافة إدخال إلى السجل ، ووظيفة DeregisterEventSource لإغلاق المؤشر الذي تم إرجاعه بواسطة RegisterEventSource.
من المنطقي استدعاء RegisterEventSource أثناء تهيئة التطبيق وحفظ الواصف الذي تم إرجاعه طوال الوقت ، بحيث يمكن وضع الإدخالات في السجل من أماكن مختلفة في البرنامج. قد يبدو أبسط مثال للكتابة في سجل Windows كما يلي:
HANDLE hLog = RegisterEventSource (NULL، "MyApplicationName") ؛
إذا (hLog! = NULL)
{
إذا كان (ReportEvent (hLog، EVENTLOG_INFORMATION_TYPE، 0، 0، NULL،
1 ، 0 ، "رسالة نصية / 0" ، NULL))
{
تم تسجيل // الحدث بنجاح
}
إلغاء تسجيل الحدث (hLog) ،
}
يمكن العثور على مزيد من التفاصيل حول دلالات الدالة ReportEvent في MSDN على https://msdn.microsoft.com/en-us/library/windows/desktop/aa363679٪28v=vs.85٪29.aspx. بالإضافة إلى ذلك ، تحتاج إلى وضع بعض البيانات حول الوحدة النمطية القابلة للتنفيذ الخاصة بالتطبيق في سجل النظام ، وإضافة موارد بتنسيق معين إلى الوحدة النمطية نفسها أو مكتبة ديناميكية تابعة لجهة خارجية. لمزيد من المعلومات حول مفاتيح التسجيل لخدمة سجل الأحداث ، راجع
الخطوة 2
يمكن عادةً تسجيل الدخول إلى أنظمة التشغيل المتوافقة مع Linux باستخدام البرنامج الخفي لسجل النظام. تحتوي هذه الخدمة على واجهة على مستوى التطبيق في شكل مجموعة من الوظائف ، يتم وضع إعلاناتها في ملف الرأس syslog.h.
استخدم وظيفة openlog لإنشاء اتصال بخدمة سجل النظام من تطبيق أو مكتبة. قم باستدعاء وظائف syslog أو vsyslog لوضع الرسائل في السجل. بعد انتهاء تسجيل الأحداث أو عند خروج التطبيق ، أغلق الاتصال بالخدمة عن طريق استدعاء وظيفة كلوسيلوغ. بالإضافة إلى ذلك ، يمكنك تكوين الإعدادات لتجاهل المكالمات التي تضيف سجلات الأحداث ذات الأولوية المحددة باستخدام وظيفة setlogmask. قد يبدو أحد الأمثلة على كتابة الرسائل في السجل كما يلي:
openlog ("MyApplication" ، LOG_CONS | LOG_PID | LOG_NDELAY ، LOG_LOCAL1) ؛
سجل النظام (LOG_NOTICE، "تم تشغيل MyApplication باستخدام PID٪ d" ، getuid ()) ؛
سجل النظام (LOG_INFO ، "رسالة المعلومات!") ؛
كلوسلوج () ؛
لمزيد من المعلومات حول معلمات وظائف syslog API ، راجع وثائق libc info.
الخطوه 3
اكتب السجلات إلى ملفات عشوائية باستخدام التنفيذ الخاص بك لنظام استمرارية الحدث الفرعي. من أبسط الحلول لهذه المشكلة إنشاء عدة وظائف في النطاق العالمي ، أحدها يفتح ملفًا باسم محدد في وضع إضافة المعلومات ، والثاني يغلقه ، والثالث يضيف سلسلة رسالة تم تمريرها إليه معلمة لهذا الملف. من الناحية المفاهيمية ، يشبه هذا الحل واجهة برمجة سجل النظام في Linux.
استخدم وظائف fopen و fclose للمكتبة القياسية C لفتح ملف وإغلاقه على التوالي. استدعاء fwrite لإضافة معلومات إلى الملف. يمكنك أيضًا استخدام وظائف خاصة بالنظام الأساسي (على سبيل المثال ، CreateFile ضمن Windows) وطرق كائنات الأطر المستخدمة التي تغلف وظيفة العمل مع الملفات.