Stop scrolling through endless output. Master docker compose logs options to find issues fast and monitor services effectively.
Basic commands
# All service logs
docker compose logs
# Single service
docker compose logs web
# Multiple services
docker compose logs web worker
Follow logs in real-time
Watch logs as they happen:
# Follow all services
docker compose logs -f
# Follow specific service
docker compose logs -f api
# Start fresh and follow
docker compose logs -f --since 1m
Tail recent logs
Get last N lines:
# Last 100 lines per service
docker compose logs --tail 100
# Last 50 lines of api service
docker compose logs --tail 50 api
# Just show last line
docker compose logs --tail 1
Filter by time
Focus on recent issues:
# Last 5 minutes
docker compose logs --since 5m
# Last hour
docker compose logs --since 1h
# Since specific time
docker compose logs --since "2024-01-30T10:00:00"
# Between times
docker compose logs --since "2024-01-30T10:00:00" --until "2024-01-30T11:00:00"
Add helpful context
Include timestamps and service details:
# Add timestamps
docker compose logs -t
# No service name prefix (cleaner output)
docker compose logs --no-log-prefix
# Combine for debugging
docker compose logs -t --tail 50 -f api
Search logs effectively
Find specific errors or patterns:
# Search for errors
docker compose logs | grep -i error
# Find specific request ID
docker compose logs api | grep "req-12345"
# Count occurrences
docker compose logs | grep -c "connection refused"
# Show context around matches
docker compose logs | grep -B 2 -A 2 "panic"
Monitor multiple services
Split terminal approach:
# Terminal 1: Frontend logs
docker compose logs -f frontend
# Terminal 2: Backend logs
docker compose logs -f api
# Terminal 3: Database logs
docker compose logs -f postgres
Save logs for analysis
# Save all logs
docker compose logs > logs.txt
# Save with timestamps
docker compose logs -t > logs-$(date +%Y%m%d).txt
# Service-specific logs
docker compose logs api > api-debug.log
Common debugging patterns
Application won’t start:
docker compose logs --tail 100 app | grep -E "error|fatal|panic"
Connection issues:
docker compose logs --since 5m | grep -i "connection\|refused\|timeout"
Memory problems:
docker compose logs | grep -i "memory\|oom\|heap"
Pro tip
Create log aliases for common tasks:
# Add to ~/.bashrc or ~/.zshrc
alias dcl='docker compose logs'
alias dclf='docker compose logs -f'
alias dclt='docker compose logs --tail 100'
alias dcle='docker compose logs | grep -i error'
# Usage
dcl api # Quick logs
dclf web # Follow web logs
dcle # Find all errors