Operate
Logging
What the server logs and what it never logs.
Logs are JSON by default on standard error.
The server does not log secrets, prompt text, query text or tool results.
Configuration secrets such as the database URL, the OIDC client secret and the LLM key are never logged.
Request logs record the method, the path (never the query string), the status, the response size in bytes and the duration.
Errors are logged without their message, since a message from a driver or library can echo a query, a connection detail or a credential. Those lines carry:
error_code, a short fixed code such astool_failed,session_lookup_failedorreadiness_check_failederror_type, the Go type of the innermost errorsqlstate, when the cause is a Postgres errorerrno, the operating system’s text (such asconnection refused) when the cause is a system error- the ids that locate the failure, such as
agent_request_id(look it up withobserve status <id>orGET /api/v1/observe/{id}),dashboard_id,principal_idand a datasourceuid
A panic is logged by its Go type (panic_type), never its value.
A datasource that turns unhealthy logs datasource unhealthy once, with its uid and type; it does not log again until the datasource has recovered.
A refused sign-in also logs the domain of the email address, and a failed code exchange logs the provider’s oauth_error code (such as invalid_grant) when it is a plain code.
A fatal error at startup is logged as server exiting with an error_code.
A message the server wrote itself from your settings is kept, for example SLASHOBSERVE_SESSION_TTL: must be between 5m and 720h, and so are the listen address errors from the operating system.
Setting values that are URLs are never echoed back.
A failure to reach Postgres, apply migrations, build a datasource or set up sign-in is logged by code and error type, so the log never shows the connection string, the user or the database name.
To help you find the cause, the line adds only what the server knows from your settings or from the operating system:
database_unavailableaddsdb_hostanddb_portfromSLASHOBSERVE_DATABASE_URLand, for a network failure,errno(for exampleconnection refused). A Postgres error addssqlstate.invalid_database_urlmeans the setting could not be parsed.migration_failedaddsmigration_versionandsqlstate.datasources_failedaddsdatasource_uidand, for a validation failure the server wrote itself such as a limit or URL scheme problem, adetailmessage.
For anything else, test the connection yourself with psql "$SLASHOBSERVE_DATABASE_URL".