The Supabase Platform provides a log explorer that allows log tracing and debugging. Currently, PostgreSQL and Cloudflare edge logs are available.
The features discussed in this article are only available through the Supabase Platform and are not available on self-hosted.
As well as a Log Explorer, Supabase provides a logging interface specific to each product.
The API Logs can be found under
Database > API Logs. These show all network requests for the REST and GraphQL API.
The Postgres Logs can be found under
Database > Postgres Logs. These show all queries and activity for your Database.
The log browser can be accessed in the sidebar under Logs Explorer. The Logs Explorer is for querying and aggregating project logs across products using SQL
For example, you may enter the following into the SQL editor to query for each user's IP address:
SELECT timestamp, h.x_real_ip
LEFT JOIN UNNEST(metadata) as m ON TRUE
LEFT JOIN UNNEST(m.request) AS r ON TRUE
LEFT JOIN UNNEST(r.headers) AS h ON TRUE
WHERE h.x_real_ip IS NOT NULL
The list of supported product sources can be found under the Sources dropdown.
To query the metadata in the above example, you can unnest the field and "join" the unnested data. Clicking on the log row shows that log metadata is stored as an array of objects.
In order to query any value that is an array, we would need to
UNNEST() that field and add it to the query as a join, thereby allowing us to reference the nested fields within the array.
Large projects may run into a
400 ORDER BY memory limit error when querying with many unnested rows across large date ranges. If experiencing this error, consider reducing the number of unnested joins, or by reducing the queried date range.
You may have also noticed from the above examples that we are able to use certain SQL functions within our queries. The querying engine currently supported is BigQuery, hence you may use any valid BigQuery function within your query.
Each log entry is stored with a
timestamp. In order to utilize the
timestamp field in a query, you can use the appropriate timestamp functions.
In the Log Explorer, timestamps are rendered as unix microsecond timestamps. SQL queries, however, should always use the
TIMESTAMP data type. If you are using a unix timestamp value in a query, cast the value to a
TIMESTAMP data type.
Templates are available to help craft you log queries. Templates are available under the Templates tab, or under the Templates Dropdown in the Query tab.