Logs

Read, filter and follow output from your services.

Everything your services write to standard output and standard error is collected and searchable. There is no agent to install and no logging library to configure — write to stdout and it is captured.

Read logs

bash
guidal logs query --service api

Follow output as it arrives:

bash
guidal logs query --service api --follow

Narrow to a time window or a string:

bash
guidal logs query --service api --since 1h
guidal logs query --service api --search "timeout"

Logs from a specific deploy

bash
guidal logs deployment --service api

This scopes output to one deployment, which is what you want when a release misbehaves and you need to separate the new version's output from the old.

In the dashboard

  1. In the navigation pane, choose Logs.
  2. Choose the service whose output you want.
  3. Use the search field to filter, and the time selector to change the window.
  4. Toggle Live to follow new output as it arrives.

Retention

PlanLog retention
Starter3 days
Pro7 days
Team30 days

Logs older than your retention window are removed. If you need longer history — for audit or compliance — ship logs to an external system from your application as well.

Daily volume limits

Each plan has a daily log volume allowance and a per-second line rate. A service that exceeds the rate has its output sampled rather than being stopped, so an accidental debug-logging loop degrades log fidelity instead of taking the service down.

If logs look incomplete, check whether the service is being rate-limited before assuming something is being swallowed.

Log at the right level

Debug logging left on in production is the usual cause of hitting these limits. It also makes real errors harder to find. Set log level through an environment variable so you can raise verbosity temporarily without a code change.

Writing logs worth reading

Write structured lines. JSON with consistent keys is far easier to filter than prose, and remains greppable.

Include an identifier. A request id or job id carried through every line lets you reconstruct one operation out of interleaved output from several replicas.

Never log secrets. API keys, tokens, passwords and full payment details do not belong in output that many people can read. Redact before writing, not after.

Log to stdout, not to a file. Files written inside a container disappear when it restarts, and are not collected.