Консольный инструмент для замера времени выполнения блоков кода и логирования в файл.
Демонстрирует создание собственного контекстного менеджера с методами __enter__ и __exit__.
- Контекстные менеджеры (
with,__enter__,__exit__) - Работа с датой и временем (
datetime,time) - Логирование в файл (дозапись)
- Обработка ошибок внутри контекста
__init__(self, name)— принимает имя операции__enter__(self)— записывает в лог начало операции, запоминает время старта__exit__(self, exc_type, exc_val, exc_tb)— записывает в лог конец операции, статус и длительность, выводит время в консоль, не подавляет ошибки
-
Формат записи начала: [2025-04-02] НАЧАЛО в 14:30:00: Сортировка
-
Формат записи конца: [2025-04-02] КОНЕЦ: Сортировка | УСПЕШНО | 0.0234 сек
-
При ошибке: [2025-04-02] КОНЕЦ: Ошибочная операция | ОШИБКА: division by zero | 0.0001 сек
⏱ Время выполнения: 0.0234 сек
- Ошибка внутри блока
withлогируется, но не подавляется (программа падает) - В лог записывается тип и текст ошибки
with logger("Сортировка"):
sorted([i for i in range(1000000)])
try:
with logger("Ошибочная операция"):
x = 1 / 0
except ZeroDivisionError:
pass
Файл log.txt
[2025-04-02] НАЧАЛО в 14:30:00: Сортировка
[2025-04-02] КОНЕЦ: Сортировка | УСПЕШНО | 0.0234 сек
[2025-04-02] НАЧАЛО в 14:31:00: Ошибочная операция
[2025-04-02] КОНЕЦ: Ошибочная операция | ОШИБКА: division by zero | 0.0001 сек- cоздавать собственные контекстные менеджеры
- Использовать enter для подготовки
- Использовать exit для завершения и обработки ошибок
- Работать с datetime и time
- Логировать в файл с дозаписью
23_execution_logger/
├── main.py # код программы
├── log.txt # файл логов (создаётся автоматически)
└── README.md # документацияpython main.py✅ Проект готов