Skip to main content

Logs

Miren captures logs from your applications, sandboxes, builds, and the system itself. Logs are stored in VictoriaLogs and queryable through the miren logs command and its subcommands.

Subcommands

SubcommandDescription
miren logs appApplication logs (default when no subcommand is given)
miren logs sandboxLogs from a specific sandbox instance
miren logs buildBuild output for a specific app version
miren logs systemMiren server internal logs

Running miren logs without a subcommand shows app logs (backward compatible).

Viewing app logs

App logs are the most common use case. By default, miren logs shows the last 100 lines from your current app:

# Show recent logs for the current app
miren logs

# Show logs for a specific app
miren logs app -a myapp

# Filter by service
miren logs app -a myapp --service web

# Show logs from the last 30 minutes
miren logs app --last 30m

# Follow logs in real-time
miren logs app -a myapp -f

Build logs

View the output from a specific build to debug deployment failures:

# Show build logs for the latest version
miren logs build -a myapp

# Show build logs for a specific version
miren logs build -a myapp VERSION

Replace VERSION with the version from miren app history.

Sandbox logs

View logs from a specific sandbox instance, useful for debugging issues in individual containers:

# Show logs for a specific sandbox
miren logs sandbox -s SANDBOX_ID

Use miren sandbox list to find sandbox IDs.

System logs

View Miren server internal logs for debugging server-level behavior:

miren logs system

System logs contain output from the Miren server process itself — controller reconciliation, RPC calls, sandbox lifecycle events, and other internal operations. Use these when debugging server behavior rather than application issues.

Filtering with grep

Use --grep (or -g) to filter log output. The filter supports multiple syntax options:

SyntaxDescriptionExample
wordMatch logs containing "word" (case-insensitive)error
"phrase"Match logs containing exact phrase"connection failed"
'phrase'Match logs containing exact phrase (alternate)'connection failed'
/regex/Match logs matching regex pattern/err(or)?/
-termExclude logs matching term-debug
term1 term2Match logs containing ALL terms (AND)error timeout
  • Case-insensitive: All word and phrase matches are case-insensitive
  • AND logic: Multiple terms must all match for a log line to be included
  • Negation: Prefix any term with - to exclude matching lines
  • Quotes: Use double (") or single (') quotes for phrases with spaces
  • Regex: Enclose patterns in forward slashes (/pattern/) for regex matching
# Filter for errors
miren logs -g error

# Exclude debug lines
miren logs -g "-debug"

# Match a phrase
miren logs -g '"connection refused"'

# Combine filters (must match both)
miren logs -g "error timeout"

Time ranges

By default, logs show the last 100 lines. Use --last to specify a time range:

# Last 5 minutes
miren logs --last 5m

# Last hour
miren logs --last 1h

# Last 24 hours
miren logs --last 24h

Following logs

Use --follow (or -f) to stream logs in real-time:

# Follow all logs
miren logs -f

# Follow logs for a specific app
miren logs app -a myapp -f

Output format

Log entries are displayed with the following format:

S 2024-01-15 10:30:45: [source] Log message here
PrefixMeaning
Sstdout
Estderr
ERRerror
Uuser out-of-band

Each entry includes a timestamp and an optional source identifier (such as a truncated sandbox ID) to help you trace which instance produced the log line.