Логирование является важным инструментом для отслеживания и устранения ошибок, а также для понимания работы вашего кода в 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 позволяет отслеживать и диагностировать проблемы вашего кода с помощью мощного и гибкого инструментария. Не забывайте использовать логирование в своих проектах для улучшения качества и надежности вашего кода.
Добавить комментарий