Просмотр журналов функций пользовательских данных

Журналы помогают понять, как выполняются функции пользовательских данных и диагностировать проблемы, когда функции не работают должным образом. Журналы можно просматривать двумя способами:

  • Во время тестирования — просмотр журналов в реальном времени на панели тестирования при тестировании функций в режиме разработки
  • После вызова — просмотр журналов для вызванных опубликованных функций

В этой статье объясняется, как просматривать и использовать журналы для мониторинга выполнения функций и устранения неполадок.

Просмотр журналов во время тестирования

При тестировании функций вы можете просматривать журналы в режиме реального времени при выполнении функции:

  • Панель тестирования в режиме разработки — просмотр журналов при тестировании неопубликованных или опубликованных функций
  • Панель выполнения в режиме только для запуска — просмотр журналов во время выполнения опубликованных функций

Обе панели немедленно отображают выходные данные журнала, что позволяет просматривать сведения о выполнении и отладке проблем при их возникновении. Дополнительные сведения о функциях тестирования см. в разделе "Тестирование функций пользовательских данных".

Просмотр исторических логов для вызываемых функций

После вызова опубликованных функций вы можете просмотреть журналы для анализа прошлых исполнений.

Чтобы получить доступ к историческим журналам.

  1. Переключитесь на режим запуска только с помощью переключателя режима.

  2. Наведите указатель мыши на имя функции в списке функций.

  3. Щелкните значок многоточия (...), а затем выберите Просмотреть исторический журнал.

    Снимок экрана, показывающий, как просматривать исторические журналы функции.

Понимание представления исторических журналов

В отображении журнала показываются последние вызовы выбранной функции. Вы можете просматривать до 50 записей, а журналы хранятся в течение 30 дней. Выберите ссылку даты в столбце Date (UTC), чтобы просмотреть подробные журналы для конкретного вызова.

Снимок экрана: просмотр всех вызовов функций, упорядоченных по дате.

Панель "Все исторические журналы" содержит следующие сведения для каждого вызова:

  • Дата (UTC). Метка времени, показывающая начало вызова функции. Выберите ссылку, чтобы просмотреть все логи для этой инициации. В нем отображаются сведения о вызове со всеми сообщениями, зарегистрированными пользователем или службой.
  • Состояние. Указывает, выполнен ли вызов успешно или завершился сбоем.
  • Длительность (мс). Длительность выполнения функции в миллисекундах.
  • Идентификатор вызова. Идентификатор вызова конкретной функции. Идентификатор вызова возвращается как часть заголовка HTTP. Если возникли проблемы, пользователи могут ссылаться на этот идентификатор вызова в запросе на поддержку, чтобы получить дополнительные сведения о вызове.

Просмотр подробных журналов для конкретного вызова

После открытия представления журналов истории (как описано в предыдущем разделе), вы можете углубиться в отдельные вызовы. При выборе ссылки метки времени в столбце Date (UTC) откроется область сведений о вызове , чтобы отобразить все журналы для этого вызова. Вы можете просмотреть следующее:

  • Все журналы, добавленные в код функции с помощью logging модуля
  • Системные журналы о выполнении функции
  • Все ошибки или исключения, которые произошли

Каждая запись журнала включает метку времени, сообщение журнала и уровень журнала (сведения, предупреждение, ошибка, критически важный).

Снимок экрана, показывающий, как получить подробные журналы для вызова данной функции.

Добавьте логирование в функции

Вы можете добавить пользовательские лог-записи в свои функции, используя стандартный модуль logging Python. Журналы помогают отслеживать поведение функций, отслеживать обработку данных и диагностировать проблемы.

Импорт модуля ведения журнала

Сначала импортируйте logging модуль в код функции:

import logging

Замечание

Модуль logging импортируется по умолчанию при создании нового элемента пользовательских функций данных на портале Fabric или с помощью расширения VS Code.

Использование соответствующих уровней журнала

Python предоставляет различные уровни журналов для различных ситуаций. Используйте соответствующий уровень, чтобы сделать журналы более значимыми:

# INFO - Track normal function execution and key steps
logging.info('Processing started for customer ID: 12345')
logging.info('Successfully retrieved 150 records from database')

# WARNING - Log potentially problematic situations that don't prevent execution
logging.warning('API response time exceeded 2 seconds')
logging.warning('Using cached data because fresh data is unavailable')

# ERROR - Log errors that affect functionality but don't crash the function
logging.error('Failed to connect to external API: Connection timeout')
logging.error('Invalid data format in row 42')

# CRITICAL - Log severe errors that may cause function failure
logging.critical('Database connection lost')
logging.critical('Required configuration parameter missing')

Рекомендации по ведению логов

Выполните следующие рекомендации, чтобы сделать журналы более эффективными.

  • Записывайте значимую информацию - включайте соответствующие сведения, такие как идентификаторы, счетчики или значения параметров, которые помогают диагностировать проблемы.
  • Используйте соответствующие уровни журналирования. Не регистрируйте все как INFO или ERROR; используйте правильный уровень для ситуации
  • Логирование в ключевых точках - Добавьте журналы в начале функций, до и после внешних вызовов, а также при обработке данных.
  • Избегайте ведения журнала конфиденциальных данных. Не регистрайте пароли, маркеры, персональные данные или другие конфиденциальные данные.
  • Сохранение кратких сообщений — запись четких, кратких сообщений журнала, которые легко сканировать
  • Учитывайте объем - чрезмерное ведение журнала может повлиять на производительность и достичь ежедневного предела приема

Дополнительные сведения о написании кода функции см. в модели программирования Python.

Ограничения и хранение журналов

При работе с журналами следует учитывать следующие ограничения:

  • Хранение журналов — журналы исторических вызовов хранятся по умолчанию в течение 30 дней
  • Видимые записи — окно с историей показывает до 50 записей на функцию
  • Доступность лога — появление логов вызова может занять несколько минут; обновите страницу, если вы не видите последние логи
  • Ежедневное ограничение приема - 250 МБ в день; ограничение сбрасывается ежедневно
  • Выборка - Журналы могут быть выбраны для уменьшения объема при сохранении статистически корректного анализа
  • Поддерживаемые типы журналов — сведения, ошибка, предупреждение и трассировка

Полные сведения об ограничениях служб см. в разделе "Сведения о службе" и "Ограничения".