Модуль Logging Python

Модуль logging позволяет последовательно записывать сообщения debug, info, warning, error и exception.

import logging

Используйте logging вместо print(), когда сообщения имеют разный уровень важности или когда позже их нужно отправить в файл.

Базовая настройка

basicConfig настраивает логгер по умолчанию.

import logging

logging.basicConfig(level=logging.INFO)
logging.info('Application started')
logging.warning('Low disk space')
INFO:root:Application started
WARNING:root:Low disk space

Сообщения ниже настроенного уровня игнорируются.

import logging

logging.basicConfig(level=logging.WARNING)
logging.info('Hidden message')
logging.warning('Visible message')
WARNING:root:Visible message

Создание именованного логгера

Именованные логгеры полезны в больших приложениях.

import logging

logger = logging.getLogger('app.users')
logger.setLevel(logging.INFO)
print(logger.name)
app.users

Форматирование сообщений

Формат вывода можно настроить.

import logging

logging.basicConfig(
    level=logging.INFO,
    format='%(levelname)s:%(name)s:%(message)s',
)

logger = logging.getLogger('app')
logger.info('Ready')
INFO:app:Ready

Логирование исключений

logger.exception автоматически записывает traceback внутри блока except.

import logging

logging.basicConfig(level=logging.ERROR)
logger = logging.getLogger(__name__)

try:
    1 / 0
except ZeroDivisionError:
    logger.exception('Calculation failed')
ERROR:__main__:Calculation failed
Traceback (most recent call last):
...
ZeroDivisionError: division by zero

Ссылки по теме