query for a bounded result and tail for a continuous stream. Both support the same filters.
floo logs query --app my-app
floo logs tail --app my-app
Flags
| Flag | Description | Default |
|---|---|---|
--app APP | App name or UUID (reads from config if omitted) | inferred from config |
--tail N / -t N | Number of log lines, at most 500; higher values are capped. Alias --limit | 100 |
--since SINCE / -s SINCE | Time filter (1h, 30m, 2d, or ISO timestamp) | none |
--error / -e | Errors only (shorthand for --severity ERROR) | off |
--severity LEVEL | Exact severity: DEFAULT, DEBUG, INFO, WARNING, ERROR, CRITICAL | none |
--service SVC | Filter to specific services (repeatable or comma-separated) | none |
--cron NAME | Filter to a specific cron job by name | none |
--search TEXT | Filter log messages by text (case-insensitive) | none |
--deployment ID | Filter to one deployment by ID, or latest for the app’s latest deploy | none |
--cursor CURSOR | Continue a paginated query from a previous response’s next_cursor | none |
--live / -f | Compatibility stream flag on query; prefer the tail subcommand. Cannot combine with --output. | off |
--output PATH / -o PATH | Write logs to file | none |
--env ENV | Environment to query: dev or prod | dev |
--requests | Show HTTP requests captured by floo’s gateway (public URL, status, latency) instead of app-level log output | off |
Examples
floo logs query --app my-app # Last 100 lines
floo logs query --app my-app --tail 20 # Last 20 lines
floo logs query --app my-app --since 1h # Last hour
floo logs query --app my-app --error # Errors only
floo logs query --app my-app --severity WARNING # Only warning logs
floo logs query --app my-app --service api # Only the "api" service
floo logs query --app my-app --cron daily-report # Only the cron job
floo logs query --app my-app --search "timeout" # Text search
floo logs query --app my-app --deployment latest # Only the latest deploy
floo logs tail --app my-app # Stream in real time
floo logs query --app my-app --env prod # Production logs
floo logs query --app my-app --requests # Gateway request logs
floo logs query --app my-app --output errors.json --json --error
JSON output
{
"success": true,
"data": {
"app_name": "my-app",
"logs": [
{
"timestamp": "2026-02-18T10:30:00Z",
"severity": "ERROR",
"message": "Connection refused: postgres://..."
},
{
"timestamp": "2026-02-18T10:30:01Z",
"severity": "INFO",
"message": "Server started on port 3000"
}
],
"limit": 100,
"next_cursor": "eyJ0cyI6...",
"has_more": true
}
}
has_more is true, pass next_cursor back as --cursor with the same filters to fetch the next page.
Agent debugging workflow
# Get errors
floo logs query --app my-app --error --json 2>/dev/null | jq '.data.logs[0].message'
# Fix the issue
floo env set DATABASE_URL --stdin --secret --app my-app --json
# Redeploy
floo redeploy --app my-app --json
Errors
| Code | Meaning |
|---|---|
NOT_AUTHENTICATED | Run floo auth login first |
APP_NOT_FOUND | No app with that name or ID |
PARSE_ERROR | Invalid --since format |
FILE_ERROR | Cannot write to --output path |