View Markdown

Logs and deployments

Once your app is running, two things you’ll reach for constantly:

  • Application logs — what your running app is printing (requests, errors, debug messages).
  • Deployment history — a list of every version you’ve pushed, with build logs for each one.

This page covers both.

Application logs

Print the most recent log lines from your running app:

dina apps logs --app my-app

By default you get the last 100 lines. Ask for more or fewer with --lines (-n for short):

dina apps logs --app my-app --lines 500
dina apps logs -a my-app -n 20

Logs are whatever your app writes to stdout and stderr. If your framework buffers output aggressively, you might not see messages until the buffer flushes — flush on exit or disable buffering for debugging.

Deployment history

Each time you run dina deploy, Dina records a deployment — even the failed ones. To list them:

dina apps deployments --app my-app

You’ll see a table with each deployment’s ID, status, source type (was it an image or a source upload?), creation time, port, and replica count.

For a machine-readable version:

dina apps deployments --app my-app --output json

Deployment statuses

The most common statuses you’ll see:

  • pending — queued, hasn’t started yet.
  • building — image is being built from your source.
  • deploying — build finished, rolling out to the platform.
  • running — live.
  • failed, build_failed, deploy_failed — something went wrong. See the build logs.

Build logs for a specific deployment

When a deployment fails, the build logs tell you why. First, find the deployment’s ID (the first column of dina apps deployments), then:

dina apps deployments logs --app my-app --id <deployment-id>

You’ll see the full build output — everything your Dockerfile printed, plus platform-level messages about the rollout.

Tip: dina apps info --app my-app shows the ID of the currently active deployment. That's usually the one you want to inspect.

Piecing it together

A typical debugging session after a failed deploy:

# Did it fail?
dina apps deployments --app my-app

# Why?
dina apps deployments logs --app my-app --id <id-from-above>

# Fix the code, then redeploy and watch it finish:
dina deploy --app my-app --wait

If the deploy succeeds but the app misbehaves in production, flip to the application logs:

dina apps logs --app my-app --lines 500

Scripting and piping

The raw log output is plain text, so you can pipe it straight through grep:

dina apps logs --app my-app --lines 1000 | grep ERROR

For programmatic use, dina apps deployments --output json is stable enough to script against.