View app and deploy logs: live, search, download
View your app's logs live in the dashboard or with ox logs: filter by severity and process, search with a regex, pick a time range, and download them.
Last updated 2026-10-08
To view your app's logs, open the project's Logs tab in the dashboard, or run ox logs <project> --follow in a terminal. The logs are the lines your app, its workers and its cron jobs print. You can watch them live, filter and search them, look at a time range, and download them. Each deploy also has a log of its own, with the build output.
Read live logs and follow new lines
In the dashboard, open the project and pick the Logs tab. It shows the last 300 lines and checks for new ones every 5 seconds. Keep Follow ticked to stay on the newest line. Scroll up and Follow turns off, so the page stops jumping while you read.
From a terminal:
ox logs shop --followWithout --follow, ox logs prints the last 100 lines and stops. Change that with -n; the CLI reference lists every ox logs flag. Secret values show as [redacted]; Variables lists what ox hides.
Filter by severity and search the logs
The bar above the lines has these filters:
- All, Errors and Warnings show lines of that severity and worse.
- All processes is a menu: pick one process, such as the app or one worker.
- Search the logs finds lines with that text. Case does not matter.
- .* turns the search into a regular expression. Case matters, unless it starts with
(?i).
ox logs shop --severity error
ox logs shop --process web --grep "timeout"
ox logs shop --regex "status=5[0-9][0-9]"--severity takes error, warn, info or debug. You can use --grep or --regex, not both.
See the lines around a match
A filter hides the lines next to an error, and those often say why it happened. When a filter or search is on, a matching line shows two buttons: ↑10 brings back the 10 lines just above it, and ↓10 the 10 lines just below. In the live view you can also click the line, or press Enter on it, to open both sides.
The lines that come back have every severity and no search filter, from the same process the page shows. They look dimmer than the matching lines, and a line that is already on the screen is not shown twice. Press a button again to go 10 lines further. If no buttons show on a search, your server's agent is too old to send a line's place: update it with ox servers update <server>.
The terminal has no such button. Use a time range with no filter to see what came before a line.
Look at a time range, up to 30 days back
The Time range menu has Live, Last 15 min, Last hour, Last 24 hours, Last 7 days and Custom. Custom asks for a start and an end time in UTC. Load earlier goes further back. A range or a search turns Follow off; tick it again to go back to live.
ox logs shop --since 2h
ox logs shop --since 2026-10-07T09:00 --until 2026-10-07T10:00--since and --until take a length like 2h or 7d, a time like 2026-10-07T09:00 (UTC), or an RFC 3339 time.
Your server keeps logs for up to 30 days, and less when they fill their share of the disk: 500 MB, or 1 GB on a disk of 40 GB or more, for the whole server. The bottom of the page says how far back this server goes.
Download logs as .log or ndjson
The bottom of the Logs tab says Download the last 24 hours in the live view, or Download when a range or search is on, with two links:
- .log: one line per log line, as time, process and text.
- .ndjson: one JSON object per line, with
time,process,unit,severityandtext.
A download takes your range and filters and stops at 100 MB. From a terminal, -o saves the same thing to a new file, and --json makes it ndjson:
ox logs shop --since 7d --severity error -o errors.logIt prints Saved errors.log with the size. It never writes over a file that already exists.
Read the log of one deploy or build
A deploy, rollback, backup or restore has a log of its own. Open it from Runs on the Deployments tab, or list the runs and print one:
ox runs shop
ox logs shop --run <id>When a run fails, its log ends with the step, the cause and the fix. Troubleshooting explains each message.
If the logs show nothing
- No lines at all: the app may not be running. Check
ox status shop, then the last run's log. If it keeps restarting, see The app keeps crashing. - A download ends with
ox: the download stopped at the 100 MB limit; narrow the time range or the filters for the rest: pick a shorter range or add a filter. - Older lines are gone: they are past the 30 days or the size limit above, and ox cannot get them back.