From lisa-rails
Check application logs from local Docker Compose or remote AWS CloudWatch for Rails applications. Supports log tailing, filtering, and error searching.
npx claudepluginhub codyswanngt/lisa --plugin lisa-railsThis skill is limited to using the following tools:
View and search logs across local and remote environments.
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
View and search logs across local and remote environments.
Argument: $ARGUMENTS — target and optional filter (e.g., local, local worker, staging errors, production 500, staging slow-queries)
config/deploy.yml to discover the service name (used in CloudWatch log group naming)docker-compose.yml to identify local service names for targeted log viewingdocker compose logs --tail=100
docker compose logs -f --tail=50
# Rails web server
docker compose logs --tail=100 web
# Solid Queue worker
docker compose logs --tail=100 worker
# PostgreSQL
docker compose logs --tail=100 postgres
docker compose logs --tail=500 web 2>&1 | grep -iE "(error|exception|fatal|500)"
tail -n 100 log/development.log
grep -E "SLOW|ms\)" log/development.log | tail -20
kamal app logs -d {environment}
kamal app logs -d {environment} -f
# Web role
kamal app logs --roles=web -d {environment}
# Worker role (Solid Queue)
kamal app logs --roles=worker -d {environment}
For advanced filtering and historical log access, use the AWS CLI directly.
aws logs describe-log-groups \
--region {aws-region} \
--query 'logGroups[].logGroupName' \
--output text | tr '\t' '\n' | grep -i "{app_name}"
aws logs filter-log-events \
--region {aws-region} \
--log-group-name "{log-group}" \
--start-time $(( ($(date +%s) - 1800) * 1000 )) \
--filter-pattern "ERROR" \
--query 'events[].message' \
--output text
aws logs filter-log-events \
--region {aws-region} \
--log-group-name "{log-group}" \
--start-time $(( ($(date +%s) - 1800) * 1000 )) \
--filter-pattern '"status=500"' \
--query 'events[].message' \
--output text
aws logs filter-log-events \
--region {aws-region} \
--log-group-name "{log-group}" \
--start-time $(( ($(date +%s) - 3600) * 1000 )) \
--filter-pattern '"duration" "1000"' \
--query 'events[].message' \
--output text
aws logs tail "{log-group}" \
--region {aws-region} \
--follow \
--since 10m
aws logs filter-log-events \
--region {aws-region} \
--log-group-name "{log-group}" \
--start-time $(date -d "{start-time}" +%s000) \
--end-time $(date -d "{end-time}" +%s000) \
--query 'events[].message' \
--output text
For container-level logs (useful when the application fails to start):
# List recent tasks
aws ecs list-tasks \
--cluster {cluster-name} \
--service-name {service-name} \
--region {aws-region} \
--query 'taskArns[]' --output text
# Describe a task to find the log stream
aws ecs describe-tasks \
--cluster {cluster-name} \
--tasks {task-arn} \
--region {aws-region} \
--query 'tasks[0].containers[].{Name:name,Status:lastStatus,ExitCode:exitCode}' \
--output table
Report log findings as:
| Source | Timestamp | Level | Context | Message |
|---|---|---|---|---|
| CloudWatch | 2026-03-18T10:30:00Z | ERROR | web | ActiveRecord::ConnectionTimeoutError |
| Docker | — | ERROR | worker | SolidQueue::ProcessMissingError |
| Rails log | — | WARN | N/A | DEPRECATION WARNING: ... |
Include a summary of findings: total errors, warnings, and any patterns observed.