امروزه ، بیشتر برنامه های کاربردی و سیستمی به طور دوره ای اطلاعات مربوط به روند کار ، خطاها و خرابی های آنها را در سیاهههای مربوط به نام log ذخیره می کنند. اکثر سیستم عامل های هدف عمومی خدماتی را ارائه می دهند که به شما امکان می دهد گزارش ها را با استفاده از یک رابط برنامه نویسی استاندارد بنویسید.
ضروری است
- - کامپایلر C ؛
- - Windows Platform SDK ؛
- - تهیه بسته برای glibc.
دستورالعمل ها
مرحله 1
پشتیبانی از نوشتن سیاهههای مربوط به گزارش سیستم را که از برنامه شما برای کار در سیستم عاملهای خانواده ویندوز استفاده کرده ، اضافه کنید.
از تابع RegisterEventSource API برای ثبت برنامه به عنوان منبع رویداد ، تابع ReportEvent برای افزودن مدخل به گزارش ورود به سیستم ، و تابع DeregisterEventSource برای بستن دسته برگردانده شده توسط RegisterEventSource استفاده کنید.
منطقی است که هنگام ثبت نام اولیه برنامه با RegisterEventSource تماس گرفته و توصیف کننده برگشت داده شده را تمام وقت ذخیره کنید ، به این ترتیب ورودی های مربوط به گزارش از مکان های مختلف برنامه قرار می گیرند. ساده ترین مثال نوشتن در ویندوز ممکن است به صورت زیر باشد:
HANDLE hLog = RegisterEventSource (NULL ، "MyApplicationName")؛
if (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 مشاهده کنید. علاوه بر این ، شما باید برخی از اطلاعات مربوط به ماژول اجرایی برنامه را در رجیستری سیستم قرار دهید و منابع را در یک قالب خاص به خود ماژول یا کتابخانه پویا شخص ثالث اضافه کنید. برای اطلاعات بیشتر در مورد کلیدهای رجیستری سرویس ثبت رویداد ، به https://msdn.microsoft.com/en-us/library/windows/desktop/aa363661٪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 ، "پیام اطلاعاتی!")؛
closelog ()؛
برای اطلاعات بیشتر در مورد پارامترهای توابع API syslog ، به اسناد اطلاعات libc مراجعه کنید.
مرحله 3
با استفاده از پیاده سازی خود از زیر سیستم تداوم رویداد ، سیاهههای مربوط به پرونده های دلخواه را بنویسید. یکی از ساده ترین راه حل ها برای ایجاد این مشکل ایجاد چندین توابع در دامنه جهانی است که یکی از آنها فایلی را با نام خاص در حالت add information باز می کند ، دومی آن را می بندد و سومی یک رشته پیام را به آن اضافه می کند یک پارامتر برای این پرونده از نظر مفهومی ، این راه حل شبیه رابط برنامه نویسی syslog در لینوکس است.
از توابع fopen و fclose کتابخانه استاندارد C به ترتیب برای باز و بسته کردن پرونده استفاده کنید. برای افزودن اطلاعات به پرونده ، با fwrite تماس بگیرید. همچنین می توانید از توابع مخصوص پلتفرم (به عنوان مثال CreateFile تحت ویندوز) و روش های اشیا of فریم ورک های مورد استفاده که قابلیت کار با فایل ها را در خود قرار می دهند استفاده کنید.