Skip to content

Remote Logs

The Logs page lets you view logs sent from your game in real-time. Filter by level, player, or message content to debug production issues without asking players for log files.

The Min Level dropdown in the top-right controls which logs are accepted by the backend:

SettingAccepted LogsUse Case
Debug (all logs)debug, info, warning, errorDevelopment / full diagnostics
Info+info, warning, errorTesting / moderate verbosity
Warning+ (default)warning, errorProduction recommended
Error onlyerrorMinimal logging, saves storage

Logs below the configured level are rejected at the server and never stored. This saves bandwidth and storage. The SDK can also fetch this config on init via GET /v1/logs/config to filter client-side before sending.

Changing the level requires Admin or Owner role.

The top bar shows log counts for the last 7 days:

  • Total — All logs received
  • Errors — Red badge, crashes and exceptions
  • Warnings — Yellow badge, performance issues
  • Info — Blue badge, player milestones
  • Debug — Gray badge, verbose diagnostics
FilterDescription
Level DropdownShow only logs of a specific level
Player IDExact match on player identifier
SearchFull-text search on log message (powered by PostgreSQL tsvector)
Context SearchFilter by context fields in key:value or JSON format (e.g. scene:forest or {"scene":"forest"})

Press Enter or click Search to apply player, search, and context filters. The level dropdown applies immediately.

Click the Export button to download the currently visible logs as CSV or JSON. The export uses the active filters, so filter first, then export.

Each log entry shows:

  • Timestamp — Relative time (e.g. “2m ago”)
  • Level Badge — Color-coded: red (error), yellow (warning), blue (info), gray (debug)
  • Message — Monospace text, full width
  • Player ID — Shown on desktop, hidden on mobile

Click a log entry to expand it and see the full context JSON and session ID.

Logs are displayed 50 per page. Use Previous/Next buttons to navigate. The total count is shown at the bottom.

Terminal window
# Get log level config
curl "https://api.questdata.io/v1/logs/config" \
-H "x-game-api-key: YOUR_API_KEY"
# Response: { "log_level": "warning" }
# Update log level (Admin+ required)
curl -X PATCH "https://api.questdata.io/v1/games/GAME_ID/log-level" \
-H "Authorization: Bearer JWT" \
-H "Content-Type: application/json" \
-d '{"log_level": "info"}'
# Read logs with filters
curl "https://api.questdata.io/v1/logs?level=error&limit=20" \
-H "x-game-api-key: YOUR_API_KEY"

See Remote Logging for full API reference and SDK integration.