Ответ
Стандартные уровни логирования, упорядоченные по возрастанию серьезности:
| Уровень | Назначение | Когда использовать | Пример сообщения |
|---|---|---|---|
| DEBUG | Детальная информация для отладки. | Для диагностики проблем в разработке. | "User ID 123 retrieved from cache. Cache hit: true." |
| INFO | Подтверждение нормальной работы приложения. | Для отслеживания ключевых событий бизнес-логики. | "Order #4567 successfully placed by user ID 123." |
| WARNING | Потенциально вредная или неожиданная ситуация. | Когда что-то пошло не так, но приложение работает. | "Database connection pool is 90% full." |
| ERROR | Серьезная ошибка, из-за которой операция не выполнена. | Когда функция не смогла выполниться (но приложение живо). | "Failed to process payment for order #4567. Payment gateway timeout." |
| CRITICAL / FATAL | Критическая ошибка, требующая немедленного вмешательства. | Когда приложение не может продолжать работу. | "Database is unreachable. Application shutting down." |
Почему уровни важны:
- Фильтрация: В production обычно включают логи от
WARNINGи выше, чтобы не перегружать системы. - Мониторинг и алертинг: Системы мониторинга (Prometheus, Grafana) могут отслеживать количество ошибок (
ERROR,CRITICAL) и генерировать алерты.
Пример настройки в Python (logging module):
import logging
# Настройка формата и уровня
logging.basicConfig(
level=logging.WARNING, # Будут логироваться события WARNING и выше
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)
# Примеры логов
logger.debug("Это сообщение не будет выведено в production.")
logger.info("Запуск обработки задачи.")
logger.warning("Конфигурационный файл не найден, используются значения по умолчанию.")
logger.error("Не удалось подключиться к внешнему API.")
logger.critical("Диск переполнен!")