Як писати логи

Як писати логи

Сьогодні більшість прикладних і системних додатків здійснюють періодичне збереження інформації про процес своєї роботи, помилки і збої в спеціальні журнали, звані логами. У більшості операційних систем загального призначення існують служби, що дозволяють писати логи, використовуючи стандартний програмний інтерфейс.

Вам знадобиться

  • - компілятор мови C;
  • - Windows Platform SDK;
  • - Develop-пакет для glibc.

Інструкція

                                   1. Додайте підтримку запису логів до системного журналу зі своєї програми, призначеного для роботи під управлінням операційних систем сімейства Windows.Використовуйте API функцію RegisterEventSource для реєстрації програми в якості джерела подій, функцію ReportEvent для додавання запису в журнал і функцію DeregisterEventSource для закриття дескриптора, Виклик RegisterEventSource.Виклик RegisterEventSource має сенс виробляти в процесі ініціалізації програми і зберігати повернений їй дескриптор весь час роботи з тим, щоб з різних місць програми можна було проводити розміщення записів у лозі. Найпростіший приклад запису в лог Windows може виглядати так:HANDLE hLog = RegisterEventSource(NULL, ""MyApplicationName""); if (hLog! = NULL) {if (ReportEvent (hLog, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, "" Message text\0 "", NULL)) {//подія успішно поміщена в лог} DeregisterEv//msdn.microsoft.com/en-us/library/windows/desktop/aa363679%28v=vs.85%29.aspx . Крім того, необхідно розмістити деякі дані про виконуваний додаток програми до системного реєстру, а в сам додаток або сторонню динамічну бібліотеку додати ресурси в певному форматі. Докладніше про ключі реєстру для сервісу event log можна дізнатися на сторінці http://msdn.microsoft.com/en-us/library/windows/desktop/aa363661%28v=vs.85%29.aspx .

2. Писати логи в Linux-сумісних операційних системах зазвичай можна за допомогою демона syslog. Ця служба має інтерфейс прикладного рівня у вигляді набору функцій, декларації яких поміщені в заголовковий файл syslog.h.Використовуйте функцію openlog для створення підключення до сервісу syslog з програми або бібліотеки. Викликайте функції syslog або vsyslog для розміщення повідомлень у лозі. Після закінчення запису подій або при завершенні роботи програми закрийте з 'єднання з сервісом, викликавши функцію closelog. Крім того, можна налаштувати параметри ігнорування викликів, що додають записи про події з певним пріоритетом за допомогою функції setlogmask. Приклад запису повідомлень у лог може виглядати так:openlog ("MyApplication" ", LOG_CONS | LOG_PID |, LOG_NDELAY (LOG_LOCAL1);syslog," MyApplication is launched with PID% d "", getuid ()); syslog (LOG_NOTICE, "" Information message! ""); closelog (LOG_INFO;

3. Пишіть логи в довільні файли, використовуючи власну реалізацію підсистеми збереження подій. Одним з найпростіших рішень цього завдання є створення декількох функцій у загальній області видимості, одна з яких відкриває файл з визначеною назвою в режимі додавання інформації, друга - закриває його, а третя - додає до цього файла рядок повідомлення, переданий їй як параметр. Концептуально дане рішення нагадує програмний інтерфейс syslog в Linux.Використовуйте функції fopen і fclose стандартної бібліотеки C для відкриття і закриття файлу відповідно. Викликайте fwrite, щоб додати інформацію до файла. Також можна застосовувати платформо-специфічні функції (наприклад, CreceFile під Windows) і методи об 'єктів використовуваних фреймворків, що інкапсулюють функціонал роботи з файлами.