Задача курса

Python: Настрой файловый логгер с Formatter и фильтрацией секретов

Курс «Python для продвинутых: ООП, типизация и тестирование» · урок «Конфигурация приложения и логирование»

Условие

Настрой файловый логгер с Formatter и фильтрацией секретов

Ты пишешь модуль настройки логирования для небольшого приложения. Логгер должен писать события в файл с нужным форматом, корректно использовать уровни и не раскрывать чувствительные данные.

Что уже дано

Проверяющая система ничего не создаёт заранее. Весь код выполняется в одном процессе и пространстве имён. Видимый каркас содержит TODO-метки — замени их рабочим кодом.

Что нужно сделать

Напиши верхнеуровневый скрипт, который выполняет следующие шаги в указанном порядке:

  1. Создай именованный логгер с именем "myapp" (используй logging.getLogger("myapp")) и сохрани его в переменную logger.

  2. Установи уровень логгера logger равным logging.DEBUG.

  3. Создай logging.FileHandler для файла "app.log" и сохрани его в переменную file_handler. Установи уровень хэндлера равным logging.WARNING.

  4. Создай logging.Formatter со строкой формата "%(levelname)s:%(name)s:%(message)s" и сохрани его в переменную formatter. Назначь этот форматтер хэндлеру file_handler.

  5. Добавь file_handler к логгеру logger.

  6. Вызови следующие методы логгера в таком порядке — каждый ровно один раз:

  • logger.debug("connecting to database") — отладочное сообщение;
  • logger.info("server started") — информационное;
  • logger.warning("disk usage above 80%") — предупреждение;
  • logger.error("failed to write report") — ошибка.

Важно: не логируй пароли, токены или секреты — даже на уровне DEBUG.

  1. Явно закрой хэндлер вызовом file_handler.close().

Ввод и вывод

stdin не используется. Печатать через print в stdout ничего не нужно.

Проверяющая система после твоего кода читает файл app.log и проверяет его содержимое, а также инспектирует объекты logger, file_handler и formatter в пространстве имён.

Пример использования

from pathlib import Path
print(Path("app.log").read_text(encoding="utf-8").strip())

Результат:

WARNING:myapp:disk usage above 80%
ERROR:myapp:failed to write report

Попробуйте решить

РешениеPython
Без регистрации · результат не сохраняется