Як робити логи.

Одним з основних способів діагностики несправностей програмного забезпечення, який вже працює на комп'ютері користувача, є ведення журналів подій - логів. Зазвичай в них заносяться дані про запуски, а також важлива інформація про стан процесу та системному оточенні у разі критичного збою. Робити логи можна як власними коштами, так і за допомогою спеціальних служб операційних систем.
Вам знадобиться
  • - транслятор з мови програмування;
  • - можливо, пакет Windows Platform SDK;
  • - можливо, пакет розробника для glibc.
Інструкція
1
Проаналізуйте умови використання і складіть вимоги до розроблюваної підсистемі, компоненту або бібліотеці, яка буде робити логи . Дайте відповідь на питання про те, під керуванням якої платформи або платформ вона повинна функціонувати, яким буде її інтерфейс прикладного програмування.
2
Відповідно з виявленими особливостями функціонування і наданих API створіть заготовку підсистеми ведення логів. Приступите до реалізації її функціоналу.
3
Найпростішим варіантом ведення логів є самостійне створення файлів в місці, визначеному конфігурацією додатки, з подальшим записом у них даних довільного формату. Застосовуйте для цього функції стандартної бібліотеки C (fopen, fclose, fwrite), об'єкти потоків стандартної бібліотеки C ++ (ofstream), класи використовуваного фреймворку (такі як CFile, QFile) або функції API операційної системи (CreateFile, WriteFile в Windows).
4
Реалізуйте запис логів за допомогою програмного інтерфейсу служби syslog в UNIX-сумісних операційних системах. Функції API syslog декларовані в заголовному файлі syslog.h. Підключіть його в потрібному місці вихідного коду свого проекту.
5
Підключіться до сервісу syslog, використовуючи виклик функції openlog. Як параметри передайте їй покажчик на рядок, що містить ідентифікатор додатки або компонента, який буде здійснювати запис, прапори опцій і маску подій, що пропускаються в лог. Використовуйте виклики функцій syslog і vsyslog для додавання записів в журнал. Для відключення від сервісу викличте функцію closelog. Простий приклад коду для роботи з syslog може бути таким: openlog ("prefix", LOG_NDELAY | LOG_CONS | LOG_PID, LOG_LOCAL1); syslog (LOG_INFO, "% s", "Info"); syslog (LOG_NOTICE, "% s", " Notice "); closelog (); підключатися до syslog має сенс при ініціалізації програми, а відключатися - при завершенні роботи.
6
В операційних системах Windows використовуйте API для роботи з сервісом EventLog щоб додавати записи в системні журнали. Проведіть виклик RegisterEventSource для отримання дескриптора логу на зазначеній машині. Використовуйте цей дескриптор при викликах функції ReportEvent, що здійснює запис у журнал. Після закінчення роботи викличте DeregisterEventSource щоб закрити з'єднання і звільнити ресурси, виділені RegisterEventSource. Найпростіший приклад роботи з EventLog може бути таким: HANDLE h = :: RegisterEventSource (NULL, "AnySource"); ASSERT (h! = NULL); :: ReportEvent (h, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 3, 0, "Text1Text2Text3", NULL); :: DeregisterEventSource (h); Як і у випадку з syslog, має сенс викликати RegisterEventSource при початку, а DeregisterEventSource - при завершенні роботи програми.