# Logs

Read bounded application output, correlate it with deployments and requests, and keep secrets out of the event stream.

Ferrite collects application stdout and stderr as bounded operational evidence.
Use logs to explain a specific request, build, release, or worker attempt—not as
the only durable record of a domain decision.

## Read recent logs

```bash
ferrite logs my-app
```

The dashboard provides the same app-scoped read model with generation, stream,
timestamp, and message fields preserved.

## Make logs useful

Include a request or correlation ID, app and generation, tenant-safe subject
reference when relevant, operation, outcome, duration, and reason class. Use
structured JSON when an agent or log processor will consume the stream.

Never log secret values, cookies, bearer tokens, reset links, passwords, TOTP
seeds, raw signed assertions, or complete payment data.

## Correlate failures

1. Identify the failing request and time range.
2. Check the app generation and deployment history.
3. Read the bounded logs for that generation.
4. Reproduce locally or in a preview.
5. Deploy the fix and verify the same product journey.

See [Deployments](/developers/deployments/) and [Analytics & Usage](/developers/analytics/).
