DEV Community на русском
Подписаться
Проектирование и ротация уровней логирования: почему приложения используют DEBUG/INFO/WARNING/ERROR
Журналы приложений используют различные метки, такие как DEBUG, INFO, WARNING и ERROR, которые в основном функционируют как пороговые значения для фильтрации. Модуль логирования Python определяет пять уровней, от DEBUG (10), представляющего детализированную информацию, до CRITICAL (50), указывающего на сбой приложения. Установка уровня логгера на INFO означает, что будут записываться только сообщения с числовым значением 20 или выше. Это позволяет разработчикам встраивать подробные диагностические утверждения, не загромождая журналы нормальной работы, активируя их только при необходимости для расследования. Пример приложения, maintenance_agent.py, направляет вывод журнала в RotatingFileHandler и StreamHandler, изначально установленные на INFO, поэтому сообщения DEBUG обычно подавляются. Распределение вызовов журнала в приложении отражает его проектные предположения: INFO для прогресса, WARNING для устранимых проблем и ERROR для реальных сбоев. CRITICAL не используется, поскольку приложение спроектировано так, чтобы самостоятельно обрабатывать сбои, специфичные для конкретного сайта. Ротация журналов, реализованная RotatingFileHandler, предотвращает бесконечный рост файлов журналов, устанавливая максимальный размер и количество резервных копий. Этот механизм гарантирует сохранение истории журналов без чрезмерного использования дискового пространства. Отдельный обработчик, _SiteLogCapture, собирает временные журналы для отдельных запусков обслуживания сайта для создания отчетов или электронных писем, а затем удаляет их. Это демонстрирует, как несколько обработчиков могут обрабатывать один и тот же поток журнала для разных целей: долгосрочная история против временного, специфического использования. Уровни журнала действуют как вертикальный фильтр для детализации, в то время как выбор обработчиков служит горизонтальным фильтром для аудитории и цели.