2.4 KiB
2.4 KiB
Задача 5. Система логирования (ООП, Наследование, Работа с файлами)
Постановка
- Logger (базовый класс): Умеет логировать сообщения.
- FileLogger: Наследник, который пишет в файл.
- ConsoleLogger: Наследник, который пишет в консоль.
- MultiLogger: Комбинированный логгер, который пишет везде.
Задание
Класс Logger:
- Создайте класс
Logger. - Метод
__init__(self, name)— сохраняет имя логгера. - Метод
format_message(self, level, message)— возвращает строку формата:"[2026-07-18 10:30:45] [INFO] [LoggerName] Message". Используйтеdatetime.now(). - Метод
log(self, level, message)— абстрактный метод, просто пишетpass. Переопределяется в наследниках.
Класс FileLogger(Logger):
- Создайте класс
FileLogger, наследующийLogger. - В
__init__(self, name, filename)вызовитеsuper().__init__(name)и сохраните имя файла. - Переопределите
log(self, level, message)— форматирует черезformat_messageи записывает в файл (режим'a', append).
Класс ConsoleLogger(Logger):
- Создайте класс
ConsoleLogger, наследующийLogger. - Переопределите
log(self, level, message)— форматирует и выводит в консоль черезprint.
Класс MultiLogger:
- Создайте класс
MultiLogger. - В
__init__(self, *loggers)сохраните список логгеров. - Метод
log(self, level, message)— вызываетlogу каждого логгера.
Тесты:
- Создайте
FileLogger("file_log", "app.log") - Создайте
ConsoleLogger("console_log") - Создайте
MultiLogger(file_logger, console_logger) - Залогируйте несколько сообщений разных уровней:
"INFO","WARNING","ERROR" - Проверьте, что сообщения появились и в файле, и в консоли