Skip to content

Logging

Log Levels

LevelWhen to useWhat you'll see
errorSomething is broken and needs attentionMissing secrets, capability load failures, delivery failures
warnDegraded but recoveredFallback model activated, edit failed (sent as new message), retry succeeded
infoNormal operationsBoot phases, message delivery, tool calls, deploys
debugDetailed flowPrompt routing, session resolution, token counts
traceEverything including swallowed errorsEvery silent catch, failed probes, harmless timeouts

Set via LOG_LEVEL in .env. Default: info.

TRACE level

LOG_LEVEL=trace surfaces every error that's normally swallowed — including many harmless patterns:

  • [platform_detect] spawnSync ETIMEDOUT — WSL journalctl probe timed out (sleep detection falls back to idle time)
  • [phase_transport] pkill ... Command failed — no stale process to kill on clean boot (expected)
  • [skill-watcher] ENOENT — optional skill file not present
  • [irc-client] ECONNREFUSED — IRC server not running (non-critical service)

These are diagnostic noise at trace level, not bugs. Use TRACE when debugging a specific silent failure — don't leave it on permanently (log files grow fast).

Log location

~/.abtars/logs/bridge-YYYY-MM-DD.log

Rotated daily. Retention controlled by doctor.sh --fix (default: 7 days).

Useful grep patterns

bash
# Errors only
grep "ERROR" ~/.abtars/logs/bridge-$(date +%F).log

# Swallowed errors (TRACE must be enabled)
grep "swallowed" ~/.abtars/logs/bridge-$(date +%F).log

# Message delivery
grep "Response delivered\|send failed" ~/.abtars/logs/bridge-$(date +%F).log

# Boot sequence
grep "✓\|✅\|ERROR" ~/.abtars/logs/bridge-$(date +%F).log | head -20