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

43 lines
2.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
### Задача 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. Проверьте, что сообщения появились и в файле, и в консоли