Ответ
В стандартном модуле logging
Python обработчики (handlers) отвечают за направление сообщений лога в определенное место (консоль, файл, сетевой сокет и т.д.).
Для записи логов в файл используется logging.FileHandler
. Процесс настройки включает три основных шага:
- Создать логгер — основной объект для записи сообщений.
- Создать и настроить обработчик — указать файл и уровень логирования для него.
- Создать форматер — определить формат вывода сообщений.
- Добавить обработчик к логгеру.
Пример:
import logging
# 1. Получаем (или создаем) логгер
logger = logging.getLogger('my_app_logger')
logger.setLevel(logging.DEBUG) # Устанавливаем общий уровень для логгера
# 2. Создаем обработчик для записи в файл
# Он будет записывать только сообщения уровня ERROR и выше
file_handler = logging.FileHandler('app_errors.log', mode='a', encoding='utf-8')
file_handler.setLevel(logging.ERROR)
# 3. Создаем форматер для определения вида логов
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
# 4. Добавляем настроенный обработчик к логгеру
logger.addHandler(file_handler)
# Примеры сообщений
logger.info("Это информационное сообщение, оно не попадет в файл.")
logger.error("Произошла ошибка. Это сообщение будет записано в app_errors.log.")
Другие популярные обработчики:
StreamHandler
: выводит логи в поток (например, в консольsys.stderr
).RotatingFileHandler
: записывает логи в файл и автоматически ротирует его при достижении определенного размера.