logging
и его класс logging.Formatter
.
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
Полный пример:
import logging
# Настройка логгера
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)
# Создание обработчика (handler) - вывод в консоль
handler = logging.StreamHandler()
# Создание форматтера
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# Установка форматтера для обработчика
handler.setFormatter(formatter)
# Добавление обработчика к логгеру
logger.addHandler(handler)
# Логирование
logger.debug('Отладочное сообщение')
logger.info('Информационное сообщение')
logger.warning('Предупреждение')
logger.error('Ошибка')
logger.critical('Критическая ошибка')
Чтобы установить собственный формат для записи логов в Python, необходимо воспользоваться модулем logging
и сконфигурировать его, используя объекты Formatter
.
Основные шаги:
logging
:
import logging
Formatter
, указав желаемый формат:
Формат задается строкой, использующей специальные символы, такие как:
%(asctime)s
: Дата и время записи.%(levelname)s
: Уровень логирования (DEBUG, INFO, WARNING, ERROR, CRITICAL).%(name)s
: Имя логгера.%(message)s
: Сообщение, которое необходимо записать в лог.%(filename)s
: Имя файла, из которого была вызвана запись в лог.%(lineno)d
: Номер строки, из которой была вызвана запись в лог.%(funcName)s
: Имя функции, из которой была вызвана запись в лог.formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
В этом примере, формат лог-сообщения будет следующим: Дата и время - Имя логгера - Уровень - Сообщение
Handler
), который будет записывать логи:
Существует несколько типов обработчиков, например:
logging.StreamHandler
: Выводит логи в консоль.logging.FileHandler
: Записывает логи в файл.handler = logging.StreamHandler() # Для вывода в консоль
# или
# handler = logging.FileHandler('my_app.log') # Для записи в файл
handler.setFormatter(formatter)
logger = logging.getLogger('my_logger')
Например, logging.INFO
будет записывать сообщения уровней INFO, WARNING, ERROR и CRITICAL.
logger.setLevel(logging.INFO)
logger.addHandler(handler)
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
Пример полного кода:
import logging
# 1. Создаем объект Formatter
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# 2. Создаем обработчик (например, для вывода в консоль)
handler = logging.StreamHandler()
handler.setFormatter(formatter)
# 3. Получаем логгер
logger = logging.getLogger('my_app')
logger.setLevel(logging.INFO) # Устанавливаем уровень логирования
# 4. Добавляем обработчик к логгеру
logger.addHandler(handler)
# 5. Используем логгер
logger.info('Application started')
logger.warning('Low memory detected')
logger.error('Database connection failed')
Дополнительные возможности:
logging.config
. Это полезно для более сложной конфигурации и позволяет изменять логирование без изменения кода.logging.handlers.RotatingFileHandler
или logging.handlers.TimedRotatingFileHandler
для автоматической ротации лог-файлов и предотвращения их разрастания.