Better Stack Cloudflare Logpush

Start logging in 2 minutes

Send Cloudflare logs to Better Stack using Cloudflare Logpush.

Set up Cloudflare Logpush job

Configure Logpush job for Worker Trace Events dataset:

Set up Logpush job
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/logpush/jobs" \
-H "Authorization: Bearer $CLOUDFLARE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "logpush-better-stack-logs",
"destination_conf": "https://$INGESTING_HOST?header_Content-Type=application%2Fx-ndjson&header_Authorization=Bearer%20$SOURCE_TOKEN",
"dataset": "workers_trace_events",
"enabled": true
}'


Insert your Cloudflare details

You will need to replace $ACCOUNT_ID and $CLOUDFLARE_TOKEN in command above. You can get your token in Cloudflare docs.

The token will need the account-level permission for Logs: Edit.

Enable logging on your Worker

Logpush will not send any data unless logging is explicitly enabled on your Worker. Make sure to turn on logging either in your Wrangler configuration, via the API, or in the dashboard under Settings -> Observability.

See Cloudflare’s documentation for step-by-step instructions.

View your logs and metrics 🚀

You should see your logs in Better Stack → Live tail.

Check out your metrics in the Cloudflare Logpush dashboard.

Other datasets

Interested in logging other logs than Worker Trace Events from Cloudflare? Checkout the full list of available datasets in Cloudflare documentation. Specify the correct dataset in the request. Find more details in Cloudflare docs.

Please note that zone-scoped datasets (such as HTTP Requests) require a different endpoint for the POST request:

Set up zone-scoped Logpush job
curl -X POST "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/logpush/jobs" \
-H "Authorization: Bearer $CLOUDFLARE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "logpush-better-stack-logs",
"destination_conf": "https://$INGESTING_HOST?header_Content-Type=application%2Fx-ndjson&header_Authorization=Bearer%20$SOURCE_TOKEN",
"dataset": "http_requests",
"enabled": true
}'


Insert your Cloudflare details

You will need to replace $ZONE_ID and $CLOUDFLARE_TOKEN in command above. You can get your token in Cloudflare docs.

The token will need the zone-level permission for Logs: Edit.

Cloudflare AI Gateway

Cloudflare AI Gateway logs support Logpush too. Point it at Better Stack using the AI Gateway dataset in the Logpush job above.

The request and response bodies arrive encrypted. AI Gateway encrypts the RequestBody, ResponseBody, and Metadata fields with an RSA public key you upload to your gateway, and we can't decrypt them on ingest. They'll show up as encrypted strings.

Everything else - Model, Provider, Endpoint, StatusCode, and so on - is readable and fully searchable. You can build dashboards and alerts on top of those right away.

If you also need the prompt and response bodies, fetch them with the SQL API and decrypt on your side using your private key. The decrypted text stays on your side, not in Better Stack.

See the Cloudflare decryption guide for details.

Need help?

Please let us know at hello@betterstack.com.
We're happy to help! 🙏