Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

README.md

Проект 23: Логирование выполнения (контекстный менеджер) ⏱️

Консольный инструмент для замера времени выполнения блоков кода и логирования в файл.
Демонстрирует создание собственного контекстного менеджера с методами __enter__ и __exit__.

🎯 Что закрепляет

  • Контекстные менеджеры (with, __enter__, __exit__)
  • Работа с датой и временем (datetime, time)
  • Логирование в файл (дозапись)
  • Обработка ошибок внутри контекста

📋 Функционал

Класс logger

  • __init__(self, name) — принимает имя операции
  • __enter__(self) — записывает в лог начало операции, запоминает время старта
  • __exit__(self, exc_type, exc_val, exc_tb) — записывает в лог конец операции, статус и длительность, выводит время в консоль, не подавляет ошибки

Логирование в файл log.txt

  • Формат записи начала: [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

📊 Статус

✅ Проект готов