Задача курса
Python: Настрой файловый логгер с Formatter и фильтрацией секретов
Курс «Python для продвинутых: ООП, типизация и тестирование» · урок «Конфигурация приложения и логирование»
Условие
Настрой файловый логгер с Formatter и фильтрацией секретов
Ты пишешь модуль настройки логирования для небольшого приложения. Логгер должен писать события в файл с нужным форматом, корректно использовать уровни и не раскрывать чувствительные данные.
Что уже дано
Проверяющая система ничего не создаёт заранее. Весь код выполняется в одном процессе и пространстве имён. Видимый каркас содержит TODO-метки — замени их рабочим кодом.
Что нужно сделать
Напиши верхнеуровневый скрипт, который выполняет следующие шаги в указанном порядке:
Создай именованный логгер с именем
"myapp"(используйlogging.getLogger("myapp")) и сохрани его в переменнуюlogger.Установи уровень логгера
loggerравнымlogging.DEBUG.Создай
logging.FileHandlerдля файла"app.log"и сохрани его в переменнуюfile_handler. Установи уровень хэндлера равнымlogging.WARNING.Создай
logging.Formatterсо строкой формата"%(levelname)s:%(name)s:%(message)s"и сохрани его в переменнуюformatter. Назначь этот форматтер хэндлеруfile_handler.Добавь
file_handlerк логгеруlogger.Вызови следующие методы логгера в таком порядке — каждый ровно один раз:
logger.debug("connecting to database")— отладочное сообщение;logger.info("server started")— информационное;logger.warning("disk usage above 80%")— предупреждение;logger.error("failed to write report")— ошибка.
Важно: не логируй пароли, токены или секреты — даже на уровне DEBUG.
- Явно закрой хэндлер вызовом
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
