Files
Dmitry Belan ee235ece10
CI Check / lint-and-check (push) Failing after 9s
feat: implement legacy shop management system and add task documentation files
2026-07-18 12:25:32 +03:00

2.4 KiB
Raw Permalink Blame History

Задача 5. Система логирования (ООП, Наследование, Работа с файлами)

Постановка

  • Logger (базовый класс): Умеет логировать сообщения.
  • FileLogger: Наследник, который пишет в файл.
  • ConsoleLogger: Наследник, который пишет в консоль.
  • MultiLogger: Комбинированный логгер, который пишет везде.

Задание

Класс Logger:

  1. Создайте класс Logger.
  2. Метод __init__(self, name) — сохраняет имя логгера.
  3. Метод format_message(self, level, message) — возвращает строку формата: "[2026-07-18 10:30:45] [INFO] [LoggerName] Message". Используйте datetime.now().
  4. Метод log(self, level, message) — абстрактный метод, просто пишет pass. Переопределяется в наследниках.

Класс FileLogger(Logger):

  1. Создайте класс FileLogger, наследующий Logger.
  2. В __init__(self, name, filename) вызовите super().__init__(name) и сохраните имя файла.
  3. Переопределите log(self, level, message) — форматирует через format_message и записывает в файл (режим 'a', append).

Класс ConsoleLogger(Logger):

  1. Создайте класс ConsoleLogger, наследующий Logger.
  2. Переопределите log(self, level, message) — форматирует и выводит в консоль через print.

Класс MultiLogger:

  1. Создайте класс MultiLogger.
  2. В __init__(self, *loggers) сохраните список логгеров.
  3. Метод log(self, level, message) — вызывает log у каждого логгера.

Тесты:

  1. Создайте FileLogger("file_log", "app.log")
  2. Создайте ConsoleLogger("console_log")
  3. Создайте MultiLogger(file_logger, console_logger)
  4. Залогируйте несколько сообщений разных уровней: "INFO", "WARNING", "ERROR"
  5. Проверьте, что сообщения появились и в файле, и в консоли