C++:
Логування
Як це зробити:
Скажімо, ви працюєте на Linux-машині і хочете вивести свої логи у файл за допомогою доброго старого C++. Вам потрібно буде підключити бібліотеки <iostream>
та <fstream>
для роботи з файлами. Ось швидкий приклад:
#include <iostream>
#include <fstream>
#include <string>
int main() {
std::ofstream logFile("appLog.txt", std::ios::app); // Відкрити в режимі додавання
if (!logFile.is_open()) {
std::cerr << "Виникла проблема з відкриттям файлу логу!" << std::endl;
return 1;
}
logFile << "Додаток запущений" << std::endl;
// ... десь в логіці вашого застосунку
logFile << "Відбулася важлива подія" << std::endl;
// Не забудьте закрити потік файлу
logFile.close();
return 0;
}
Якщо ви використовуєте команду tail -f appLog.txt
, ви маєте побачити:
Додаток запущений
Відбулася важлива подія
Чудово, у вас є запис подій з відмітками часу!
Поглиблений розгляд
Логування настільки ж старе, як і саме обчислення, і має корені в буквальних відмітках на папері для слідкування за тим, що робили древні комп’ютери. В сучасну епоху все зводиться до витончених програмних рішень. Є пряме записування у файл, як у прикладі вище, або ви можете звернутися до більш крутого фреймворку для логування, такого як Log4cpp або Boost.Log у світі C++; ці фреймворки пропонують рівні логування, контроль формату та багато іншого.
Говорячи про рівні, кращі практики логування включають використання різних рівнів серйозності - інформація, налагодження, попередження, помилка, фатальна помилка - тому ви зможете фільтрувати шум, коли намагаєтеся ловити баги або розібратися, чому ваш додаток поводиться як капризний підліток.
Що стосується продуктивності, не лінуйтесь зі своїми логами. Надмірне логування може перетворити ваш дуже швидкий додаток на равликовий марафон, уповільнити файлові системи, або навіть коштувати вам грошей за зберігання, якщо ви використовуєте хмарні послуги. Головне - знайти правильний баланс: логуйте те, що вам потрібно, і нічого більше.
Дивіться також
Для тих, хто любить більше зануритись в практики логування, перегляньте це:
- Бібліотека Boost.Log для деяких логувальних функцій, що вимагають більше ресурсів.
- Бібліотека glog від Google, якщо вас цікавить те, що технічні спеціалісти гіганта використовують для логування своїх додатків.
- Бібліотека Log4cpp для конфігурованого механізму логування.
А для трохи тлового читання про чому і як логування, поглибтеся у:
- Цю ветку Stack Overflow про кращі практики логування, котра допоможе вам глибше зануритися в тему.