Python:
Логування

Як користуватися:

Python містить вбудований модуль для логування. Ось базова налаштування:

import logging

# Основна конфігурація логування
logging.basicConfig(level=logging.INFO)

# Повідомлення логування
logging.debug('Це повідомлення для налагодження')
logging.info('Інформація про те, що ваша програма щойно зробила')
logging.warning('Попереджувальне повідомлення')
logging.error('Сталася помилка')
logging.critical('Програма не може відновитись!')

Коли ви запустите цей код, ви побачите наступний вивід (остаточний рівень за замовчуванням - WARNING, повідомлення debug та info не будуть показані):

WARNING:root:Попереджувальне повідомлення
ERROR:root:Сталася помилка
CRITICAL:root:Програма не може відновитись!

Ви також можете налаштувати логування для запису у файл замість консолі:

logging.basicConfig(filename='app.log', filemode='w', level=logging.INFO)

Тепер ваші логи будуть направлені до файлу ‘app.log’.

Поглиблене вивчення

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

Модуль logging у Python досить потужний та гнучкий. Він дозволяє програмістам встановлювати різні рівні логів (DEBUG, INFO, WARNING, ERROR, CRITICAL), які можуть допомогти в категоризації та фільтрації логів. Він має ієрархічну систему логерів, що означає, що ви можете мати стосунки “батько-дитина” між логерами та поширювати повідомлення вгору по ланцюжку.

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

Що стосується впровадження, при налаштуванні логування важливо зробити це один раз на початку вашого додатку. Рекомендується конфігурувати його на рівні модуля, використовуючи logging.getLogger(__name__) для дотримання найкращих практик логування Python.

Логування не повинно істотно впливати на продуктивність додатка за звичайних обставин. Однак, слід бути уважними до того, що логується: надмірно детальне логування, особливо на рівнях DEBUG, може сповільнити додаток та швидко заповнити сховище файлів логу.

Дивись також

Для отримання більшої інформації про модуль логування Python, перегляньте офіційний кулінарний посібник Python з логування для деяких чудових прикладів та найкращих практик: https://docs.python.org/3/howto/logging-cookbook.html

Для глибокого вивчення структурованого логування та як воно може допомогти зробити логи більш інформативними та легшими для аналізу, Loguru добре документовано: https://loguru.readthedocs.io

Також, розгляньте 12-факторну методологію додатків, зокрема розділ про логи для сучасного погляду на логування додатків: https://12factor.net/logs