Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Cloud Functions
  • Сопоставление с другими сервисами Yandex Cloud
    • Обзор
    • Управление зависимостями
    • Обработчик запросов
    • Контекст вызова
    • Журналирование
    • Обработка ошибок
    • Использование SDK
  • Инструменты
  • Правила тарификации
  • Управление доступом
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Системные сообщения
  • Пользовательские сообщения
  1. Разработка на Python
  2. Журналирование

Журналирование выполнения функции на Python

Статья создана
Yandex Cloud
Обновлена 26 августа 2024 г.
  • Системные сообщения
  • Пользовательские сообщения

Сервис Cloud Functions автоматически захватывает потоки стандартного вывода приложения на Python и отправляет их в централизованную систему журналирования, доступную в Yandex Cloud. Помимо журналов выполнения приложения записываются системные записи о событиях выполнения запроса.

Для записи дополнительных сообщений используются стандартные языковые конструкции:

  1. print — выводит сообщение в стандартный поток вывода stdout.
  2. logging — выводит сообщение в установленном формате в выбранный поток вывода.

Примечание

Многострочные сообщения должны быть разделены символом \r (carriage return), но не \n (line feed). При использовании последнего каждая строка отправляется отдельным сообщением и отображается в журнале отдельно.

Системные сообщения

В рамках обработки каждого вызова в журнал также записываются системные сообщения START, END и REPORT:

START RequestID: <идентификатор_запроса> Version: <идентификатор_версии_функции>
END RequestID: <идентификатор_запроса>
REPORT RequestID: <идентификатор_запроса>
    Duration: 236.606 ms
    Billed Duration: 300 ms
    Memory Size: 128 MB
    Max Memory Used: 22 MB
    Queuing Duration: 0.027 ms
    Function Init Duration: 225.298 ms

Все строки содержат идентификатор запроса (RequestID), который генерируется автоматически в момент вызова функции.

Строка REPORT — это отчет о выполнении функции. Она содержит дополнительную информацию о потребленных ресурсах:

  • Duration – время, затраченное на вызов функции. Включает в себя параметры Queuing Duration и Function Init Duration.
  • Billed Duration – время, за которое взимается плата в соответствии с правилами тарификации.
  • Memory Size – объем памяти, указанный при создании версии, МБ.
  • Max Memory Used – объем использованной памяти на момент начала выполнения запроса.
  • Queuing Duration – время, которое запрос на выполнение провел во внутренней очереди. Если время растет, это может значить, что не хватает экземпляров функции. Максимальное количество экземпляров определяется квотами.
  • Function Init Duration – время, потраченное на инициализацию среды выполнения и загрузку кода функции.

Пользовательские сообщения

Перед запуском функции Cloud Functions настраивает для корневого логгера:

  • обработчик для записи логов в stdout;
  • форматтер, который добавляет к сообщению время его создания, идентификатор запроса и уровень логирования.

Важно

Изменить настройки корневого логгера с помощью функции logging.basicConfig() нельзя.

По умолчанию уровень корневого логгера — Warning, все логи с уровнем ниже игнорируются. Изменить уровень логирования можно с помощью метода setLevel для:

  • всего приложения.
    logging.getLogger().setLevel(logging.DEBUG)
    
  • любого логгера, кроме корневого.
    logging.getLogger('requests.packages.urllib3').setLevel(logging.DEBUG)
    logging.getLogger('myapp').setLevel(logging.DEBUG)
    

Изменить формат логов можно так:

root_handler = logging.getLogger().handlers[0]
root_handler.setFormatter(logging.Formatter(
	'[%(levelname)s]\t%(name)s\t%(request_id)s\t%(message)s\n'
))

В примере вместо времени создания сообщения выводится имя логгера.

Подробнее о настройках логирования читайте в документации Python.

Была ли статья полезна?

Предыдущая
Контекст вызова
Следующая
Обработка ошибок
Проект Яндекса
© 2025 ООО «Яндекс.Облако»