Salah satu cara utama untuk mendiagnosis kerosakan dalam operasi perisian yang sudah berjalan di komputer pengguna adalah dengan menyimpan log peristiwa - log. Biasanya, mereka mencatat maklumat mengenai pelancaran, serta maklumat penting mengenai keadaan proses dan persekitaran sistem sekiranya berlaku kegagalan kritikal. Anda boleh membuat log dengan cara anda sendiri dan menggunakan perkhidmatan khas sistem operasi.
Ia perlu
- - penterjemah dari bahasa pengaturcaraan yang digunakan;
- - mungkin SDK Platform Windows;
- - mungkin pakej pembangunan untuk glibc.
Arahan
Langkah 1
Analisis syarat penggunaan dan buat syarat untuk subsistem, komponen atau perpustakaan yang dibangunkan yang akan membuat log. Jawab soalan mengenai platform atau platform mana yang harus dikendalikannya, apakah API-nya.
Langkah 2
Sesuai dengan fitur berfungsi yang dikenal pasti dan API yang disediakan, buat templat untuk subsistem pembalakan. Mula melaksanakan fungsinya.
Langkah 3
Pilihan termudah untuk log adalah membuat fail secara bebas di lokasi yang ditentukan oleh konfigurasi aplikasi, dan kemudian menulis data dalam format apa pun kepada mereka. Gunakan fungsi perpustakaan standard C (fopen, fclose, fwrite), objek aliran perpustakaan standard C ++ (ofstream), kelas kerangka yang digunakan (seperti CFile, QFile), atau fungsi API sistem operasi (CreateFile, WriteFile pada Windows).
Langkah 4
Laksanakan pembalakan menggunakan API syslog pada sistem operasi yang serasi dengan UNIX. Fungsi API syslog dinyatakan dalam fail tajuk syslog.h. Sambungkannya di tempat yang betul dalam kod sumber projek anda.
Langkah 5
Sambung ke perkhidmatan syslog menggunakan panggilan fungsi openlog. Sebagai parameter, sampaikan penunjuk ke rentetan yang berisi pengenal aplikasi atau komponen yang akan ditulis, bendera pilihan dan topeng peristiwa yang akan disampaikan ke log. Gunakan panggilan ke fungsi syslog dan vsyslog untuk menambah entri ke log. Panggil fungsi closelog untuk memutuskan sambungan dari perkhidmatan. Contoh ringkas kod syslog mungkin: openlog ("awalan", LOG_NDELAY | LOG_CONS | LOG_PID, LOG_LOCAL1); syslog (LOG_INFO, "% s", "Info"); syslog (LOG_NOTICE, "% s", "Notice" closelog (); Masuk akal untuk menyambung ke syslog semasa memulakan aplikasi, dan memutuskan semasa mematikannya.
Langkah 6
Pada sistem operasi Windows, gunakan EventLog API untuk menambahkan entri ke log sistem. Hubungi RegisterEventSource untuk mendapatkan deskriptor log pada mesin yang ditentukan. Gunakan pemegang ini semasa memanggil fungsi ReportEvent yang menulis ke log. Setelah selesai, hubungi DeregisterEventSource untuk menutup sambungan dan melepaskan sumber yang diperuntukkan oleh RegisterEventSource. Contoh paling mudah untuk bekerja dengan EventLog ialah: HANDLE h =:: RegisterEventSource (NULL, "AnySource"); ASSERT (h! = NULL);:: ReportEvent (h, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 3, 0, "Text1Text2Text3", NULL);:: DeregisterEventSource (h); Seperti syslog, masuk akal untuk memanggil RegisterEventSource pada permulaan dan DeregisterEventSource semasa penutupan aplikasi.