← Cloudflare Workers / workers / observability / logs
Workers Logpush
Cloudflare Logpush поддерживает возможность отправки Workers Trace Event Logs к поддерживаемый пункт назначения. Workers Trace Events Logpush включает метаданные о запросах и ответах, неструктурированные console.log() сообщения и все необработанные исключения. Этот продукт доступен на плане Workers Paid. Информацию о ценах см. в Цены.
Проверьте доступ к Logpush
Чтобы настроить задание Logpush, убедитесь, что ваша роль в аккаунте Cloudflare позволяет использовать Logpush. Чтобы проверить свою роль:
-
На панели управления Cloudflare перейдите к разделу Участники страницу.
Перейдите в Участники ↗ -
Проверьте права доступа своей учетной записи. Роли с доступом к настройке Logpush отличаются от прав доступа Workers. Полный доступ к Logpush имеют роли Super Administrator, Administrator и Log Share.
Также можно создать новый API-токен ограничен уровнем Account с правами Logs Edit.
Создание задания Logpush
Через панель управления Cloudflare
Чтобы создать задание Logpush в панели управления Cloudflare:
-
На панели управления Cloudflare перейдите к разделу Logpush страницу.
Перейдите в Logpush ↗ -
Выберите Создание задания Logpush.
-
Выберите назначение и при необходимости настройте его.
-
Выберите События трассировки Workers в качестве набора данных > Далее.
-
При необходимости настройте поля данных. В противном случае выберите Далее.
-
Следуйте инструкциям в панели управления, чтобы подтвердить владение назначением ваших данных и завершить создание задания.
Через cURL
В следующем примере логи Workers отправляются в R2. Дополнительные варианты настройки описаны в Enable destinations и Настройка API в документации по Logs.
curl "https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/logpush/jobs" \
--header 'X-Auth-Key: <API_KEY>' \
--header 'X-Auth-Email: <EMAIL>' \
--header 'Content-Type: application/json' \
--data '{
"name": "workers-logpush",
"output_options": {
"field_names": ["Event", "EventTimestampMs", "Outcome", "Exceptions", "Logs", "ScriptName"],
},
"destination_conf": "r2://<BUCKET_PATH>/{DATE}?account-id=<ACCOUNT_ID>&access-key-id=<R2_ACCESS_KEY_ID>&secret-access-key=<R2_SECRET_ACCESS_KEY>",
"dataset": "workers_trace_events",
"enabled": true
}' | jq .В Logpush вы можете настроить фильтры и частота сэмплирования чтобы точнее контролировать объем данных, отправляемых в настроенное место назначения. Например, если вы хотите получать логи только по запросам, которые не завершились исключением, добавьте следующее filter свойство JSON ниже output_options:
"filter":"{\"where\": {\"key\":\"Outcome\",\"operator\":\"!eq\",\"value\":\"exception\"}}"
Включить логирование для Worker
Локальная разработка
Включите логирование для Worker, добавив новое свойство logpush = true, в ваш файл Wrangler. Это можно добавить либо в конфигурацию верхнего уровня, либо в окружение. Любые новые Workers с этим свойством будут автоматически подхватываться задачей Logpush.
{
"$schema": "./node_modules/wrangler/config-schema.json",
// Top-level configuration
"name": "my-worker",
"main": "src/index.js",
// Set this to today's date
"compatibility_date": "2026-08-28",
"workers_dev": false,
"logpush": true,
"route": {
"pattern": "example.org/*",
"zone_name": "example.org"
}
}"$schema" = "./node_modules/wrangler/config-schema.json"
name = "my-worker"
main = "src/index.js"
# Set this to today's date
compatibility_date = "2026-08-28"
workers_dev = false
logpush = true
[route]
pattern = "example.org/*"
zone_name = "example.org"Настройте с помощью API для multipart-загрузки скрипта:
curl --request PUT \
"https://api.cloudflare.com/client/v4/accounts/{account_id}/workers/scripts/{script_name}" \
--header "Authorization: Bearer <API_TOKEN>" \
--form 'metadata={"main_module": "my-worker.js", "logpush": true}' \
--form '"my-worker.js"=@./my-worker.js;type=application/javascript+module'Dashboard
Чтобы включить логирование Logpush через панель управления:
-
На панели управления Cloudflare перейдите к разделу Workers & Pages страницу.
Перейдите в Workers & Pages ↗ -
Выберите свой Worker.
-
Перейдите в Настройки > Observability.
-
Для Logpush, выберите Включить (это доступно, только если вы уже создали задание Logpush).
Лимиты
logs и exceptions поля имеют суммарный лимит в 16,384 символа, после которого поля начнут обрезаться. Символы учитываются в порядке всех exception.names, exception.messages, а затем log.messages.
После достижения этого предела символов все поля будут усечены с "<<<Logpush: *field* truncated>>>" на одно сообщение, после чего логи и исключения отбрасываются.
Пример
Чтобы проиллюстрировать это, предположим, что событие Logpush выглядит как JSON ниже, а лимит составляет 50 символов (вместо фактического лимита в 16,384). Алгоритм выполнит следующее:
- Подсчитайте количество символов в
exception.names:"SampleError"и"AuthError"как 20 символов.
- Подсчитайте количество символов в
exception.message:"something went wrong"засчитывается как 20 символов, остаётся 10 символов.- Первые 10 символов
"unable to process request authentication from client"будет взят и подсчитан перед усечением до"unable to <<<Logpush: exception messages truncated>>>".
- Подсчитайте количество символов в
log.message:- Усечение уже началось, поэтому
"Hello "будет заменён на"<<<Logpush: messages truncated>>>"и"World!"будет отброшен.
- Усечение уже началось, поэтому
Пример входных данных
{
"Exceptions": [
{
"Name": "SampleError",
"Message": "something went wrong",
"TimestampMs": 0
},
{
"Name": "AuthError",
"Message": "unable to process request authentication from client",
"TimestampMs": 1
}
],
"Logs": [
{
"Level": "log",
"Message": ["Hello "],
"TimestampMs": 0
},
{
"Level": "log",
"Message": ["World!"],
"TimestampMs": 0
}
]
}Пример выходных данных
{
"Exceptions": [
{
"name": "SampleError",
"message": "something went wrong",
"TimestampMs": 0
},
{
"name": "AuthError",
"message": "unable to <<<Logpush: exception messages truncated>>>",
"TimestampMs": 1
}
],
"Logs": [
{
"Level": "log",
"Message": ["<<<Logpush: messages truncated>>>"],
"TimestampMs": 0
}
]
}