Логирование является важным инструментом для отслеживания и устранения ошибок, а также для понимания работы вашего кода в Python. В этой статье мы рассмотрим основы логирования в Python, включая его настройку и использование.
Введение в модуль logging
Стандартный модуль logging в Python предоставляет гибкий фреймворк для записи сообщений о событиях в различные выходные потоки, такие как файлы, консоль и даже по электронной почте. Он поддерживает разные уровни сообщений, такие как DEBUG, INFO, WARNING, ERROR и CRITICAL.
Настройка логирования
Чтобы начать, импортируйте модуль logging и создайте базовую конфигурацию с помощью метода basicConfig(). Здесь мы настроим логирование с уровнем сообщений INFO и выводом в файл app.log.
import logging logging.basicConfig(filename='app.log', level=logging.INFO)
Запись сообщений лога
Теперь вы можете записать сообщения различных уровней с помощью соответствующих функций:
logging.debug("Это сообщение DEBUG")
logging.info("Это сообщение INFO")
logging.warning("Это сообщение WARNING")
logging.error("Это сообщение ERROR")
logging.critical("Это сообщение CRITICAL")
В результате в файле app.log появятся следующие строки:
INFO:root:Это сообщение INFO
WARNING:root:Это сообщение WARNING
ERROR:root:Это сообщение ERROR
CRITICAL:root:Это сообщение CRITICAL
Расширенная настройка логирования
Форматирование сообщений
Вы можете настроить формат сообщений лога, добавив аргумент format в метод basicConfig(). Например, добавим дату и времени, уровень сообщения и имя модуля:
logging.basicConfig(filename='app.log', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(module)s - %(message)s')
Теперь сообщения в файле app.log будут выглядеть следующим образом:
2022-01-01 00:00:00,000 - INFO - my_module - Это сообщение INFO
Логирование в несколько мест
Если вы хотите выводить сообщения лога одновременно в файл и на экран, вы можете использовать handlers. Ниже приведен пример настройки логирования с двумя обработчиками:
logger = logging.getLogger()
logger.setLevel(logging.INFO)
file_handler = logging.FileHandler('app.log')
file_handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(module)s - %(message)s'))
console_handler = logging.StreamHandler()
console_handler.setFormatter(logging.Formatter('%(levelname)s - %(message)s'))
logger.addHandler(file_handler)
logger.addHandler(console_handler)
Теперь при вызове функций для записи сообщений лога, они будут выводиться как в файл app.log, так и на экран.
Логирование исключений
Чтобы записать исключение в лог, используйте метод exception():
try:
1 / 0
except ZeroDivisionError:
logging.exception("Произошла ошибка деления на ноль")
В результате в логе появится запись с уровнем ERROR и информацией об исключении:
ERROR:root:Произошла ошибка деления на ноль
Traceback (most recent call last):
File "my_module.py", line 2, in <module>
1 / 0
ZeroDivisionError: division by zero
🚀 В заключение, логирование в Python позволяет отслеживать и диагностировать проблемы вашего кода с помощью мощного и гибкого инструментария. Не забывайте использовать логирование в своих проектах для улучшения качества и надежности вашего кода.
Перейти в телеграм, чтобы получить результаты теста





Забрать
Добавить комментарий