← Cloudflare Pages / pages / functions
Отладка и логирование
Просматривайте журналы своих Functions с помощью панели управления Cloudflare или Wrangler CLI.
Логи служат мощным инструментом отладки: они помогают тестировать и отслеживать поведение ваших Pages Functions после развертывания. Логи доступны для каждого развертывания вашего проекта Pages.
Логи содержат подробную информацию о событиях и позволяют понять:
- Успешные или неуспешные запросы к вашим Functions.
- Необработанные исключения, возникающие в ваших Functions.
- Пользовательский
console.logы, объявленные в ваших Functions. - Проблемы в продакшене, которые сложно воспроизвести.
- Представление входящих запросов к вашему приложению в реальном времени.
Начать сеанс логирования можно двумя способами:
- Запустите
wrangler pages deployment tailв терминале. - Используйте Панель управления Cloudflare.
Добавьте пользовательские логи
Пользовательские логи console.log() инструкции, которые можно добавить самостоятельно внутри Functions. При потоковой передаче логов для развёртываний, содержащих эти Functions, инструкции будут отображаться как в wrangler pages deployment tail и результаты в панели управления.
Ниже приведён пример пользовательского console.log инструкцию внутри Pages Function:
export async function onRequest(context) {
console.log(
`[LOGGING FROM /hello]: Request came from ${context.request.url}`,
);
return new Response("Hello, world!");
}После деплоя приведённого выше кода выполните wrangler pages deployment tail в терминале. Затем перейдите по маршруту, где находится ваша Function. В терминале отобразится:
Панель управления отобразит:
Просмотр журналов с помощью Wrangler
wrangler pages deployment tail позволяет разработчикам просматривать журналы конкретного проекта и развёртывания в реальном времени.
Для начала выполните wrangler pages deployment tail в каталоге вашего проекта Pages. Это будет записывать все входящие запросы к вашему приложению в локальном терминале.
Вывод каждого wrangler pages deployment tail лог представляет собой структурированный объект JSON:
{
"outcome": "ok",
"scriptName": null,
"exceptions": [
{
"stack": " at src/routes/index.tsx17:4\n at new Promise (<anonymous>)\n",
"name": "Error",
"message": "An error has occurred",
"timestamp": 1668542036110
}
],
"logs": [],
"eventTimestamp": 1668542036104,
"event": {
"request": {
"url": "https://pages-fns.pages.dev",
"method": "GET",
"headers": {},
"cf": {}
},
"response": {
"status": 200
}
},
"id": 0
}wrangler pages deployment tail позволяет настроить сеанс логирования под свои потребности. См. wrangler pages deployment tail документация о доступных параметрах конфигурации.
Просмотр журналов в панели управления Cloudflare
Чтобы просмотреть журналы для своего production или preview окружения, связанные с любым развёртыванием:
-
На панели управления Cloudflare перейдите к разделу Workers & Pages страницу.
Перейдите в Workers & Pages ↗ -
Выберите проект Pages, перейдите к деплою, для которого нужно просмотреть логи, и нажмите Просмотр сведений > Функции.
Логирование доступно всем клиентам (Free, Paid, Enterprise).
Лимиты
Для журналов Functions действуют следующие ограничения:
- Логи нигде не хранятся. Вы можете в любой момент запустить или остановить трансляцию, чтобы просмотреть их, но после этого они не сохраняются.
- Логи не отображаются, если количество запросов в секунду к Function за последние пять минут превышает 100.
- Логи из любого Durable Objects к которым привязаны ваши Functions, отобразятся в панели управления Cloudflare.
- Одновременно журналы развертывания могут просматривать не более 10 клиентов. Это может быть любая комбинация сеансов панели управления или
wrangler pages deployment tailвызовы.
Карты исходного кода
При отладке необработанного исключения вы можете обнаружить, что трассировки стека ↗ в ваших логах содержали номера строк, ссылающиеся на сгенерированные файлы JavaScript. Используя поддержку Pages для карты исходного кода ↗ вы можете получать трассировки стека, соответствующие номерам строк и символам вашего исходного кода.
См. Source maps и трассировки стека для более подробного объяснения.