Logs
SKE streams application logs from your cloud provider’s logging service — CloudWatch on AWS, Cloud Logging on GCP.
Tailing logs
Section titled “Tailing logs”ske log:tail --env production2026-09-20 14:30:01 [info] GET /api/users 200 (42ms)2026-09-20 14:30:02 [info] POST /api/orders 201 (128ms)2026-09-20 14:30:03 [warning] Cache miss for key: user:42:profile2026-09-20 14:30:05 [error] SQLSTATE[HY000]: Connection refusedLogs stream in real-time until you press Ctrl+C.
Filtering
Section titled “Filtering”Filter logs by level, time range, or search text:
# Only errors and aboveske log:tail --env production --level error
# Logs from the last hourske log:tail --env production --since 1h
# Search for a specific request IDske log:tail --env production --filter "req-abc123"Log sources
Section titled “Log sources”Your application writes to stderr, which is captured by the cloud provider’s logging service:
| Provider | Service | Retention |
|---|---|---|
| AWS | CloudWatch Logs | Configurable (default 30 days) |
| GCP | Cloud Logging | 30 days |
SKE configures the Laravel log channel to stderr by default, so all Log::info(), Log::error(), etc. calls are captured automatically.
Structured logs
Section titled “Structured logs”Logs include metadata from the SKE adapter:
- Request ID —
X-Request-Idheader added to every proxied request, useful for correlating logs across services - Source — whether the log came from a web request, queue job, scheduled task, or CLI command
- Duration — request processing time
JSON output
Section titled “JSON output”For pipeline integrations, use --json to get structured log output:
ske log:tail --env production --json