Skip to main content
Branch logs let you inspect PostgreSQL server output across the primary and replicas of a branch. Logs are useful for debugging slow queries, connection issues, replication problems, and other runtime behavior. Branch logs are generally available on every branch — no opt-in or feature flag is required.

Viewing logs in the dashboard

Open a branch in the Xata dashboard and select Logs in the branch sidebar to browse entries in a searchable viewer. From the Logs page you can:
  • Pick a preset or custom time range.
  • Filter by level (error, warning, info, debug), instance (primary or a specific replica), and process.
  • Search log message bodies with substring or regex matching.
  • Click any entry to open a details panel with the full message and metadata.
  • Use Refresh to fetch the latest entries for the current time range.
To read logs from a terminal or a script, use xata branch logs, which offers the same filters plus follow mode and raw, json, ndjson, and csv output. For anything else programmatic, such as shipping logs to an external observability tool, use the API described below.

Retrieving logs

Use the branchLogs endpoint to fetch logs for a time range. The endpoint requires the logs:read scope on your API key.
The response contains a logs array of entries and a nextCursor that you can pass back in a follow-up request to page through additional results.

Request parameters

Log entry fields

Filtering

Pass one or more filters to narrow results. Each filter applies to a specific field with an op and either a value or values: Supported operators:
  • in — match any value in values (use with instance, level, process).
  • contains / icontains — substring match on the log body (case-sensitive / insensitive).
  • regex / iregex — regular-expression match on the log body.
For example, fetch only error-level entries from the primary instance that mention deadlock:

Credential redaction

Branch logs are scrubbed before they reach the API response. If a CREATE ROLE, ALTER ROLE, CREATE USER, ALTER USER, CREATE GROUP, ALTER GROUP, or CREATE/ALTER USER MAPPING statement appears in a log line, the statement is truncated at the PASSWORD keyword and the secret is replaced with <REDACTED>. This applies to both single-line and multi-line log records. For example, a log line like:
is returned as:
Redaction is applied on the read path, so it covers historical entries as well as newly emitted logs. Other password mentions outside role and user-mapping statements are left untouched.

Pagination

When a response includes a non-null nextCursor, pass it back as cursor in the next request to fetch the following page. The start, end, limit, and filters should remain the same across paged requests.