6.6 KiB
DevOps Plugin - View Logs
You are retrieving and displaying deployment, build, or application logs.
Task: View Logs
The user wants to view logs from deployments, builds, or running applications.
Step 1: Verify Configuration
- Check if
.devops/config.jsonexists - Read configuration to determine platform
- Validate platform is supported:
- If platform is NOT "netlify", show error:
Then STOP.❌ Platform Not Supported: {platform} This plugin currently supports Netlify only. To switch to Netlify: /devops:init Supported platforms: Netlify
Step 2: Parse Logs Command
Parse arguments:
/devops:logs- Show recent application logs (last 100 lines)/devops:logs --lines 500- Show last N lines/devops:logs --build {build_id}- Show build logs/devops:logs --deployment {deployment_id}- Show deployment logs/devops:logs --follow- Stream logs in real-time/devops:logs --error- Show only errors/devops:logs --since 1h- Show logs from last hour
Step 3: Fetch Application Logs
For /devops:logs (default):
node ${CLAUDE_PLUGIN_ROOT}/cli/devops-cli.js logs fetch \
--type application \
--lines {lines} \
--format pretty
Display:
📝 Application Logs (last {lines} lines)
Platform: {platform}
Environment: {environment}
Time range: {start_time} to {end_time}
─────────────────────────────────────────
{timestamp} [INFO] Application started on port 3000
{timestamp} [INFO] Connected to database
{timestamp} [DEBUG] Processing request: GET /api/users
{timestamp} [INFO] Response sent: 200 OK
{timestamp} [WARN] High memory usage: 85%
{timestamp} [ERROR] Database query timeout
{timestamp} [INFO] Retry successful
─────────────────────────────────────────
Total: {total_lines} lines
Errors: {error_count}
Warnings: {warning_count}
💡 Filter errors: /devops:logs --error
💡 Stream live: /devops:logs --follow
Step 4: Fetch Build Logs
For /devops:logs --build {build_id}:
node ${CLAUDE_PLUGIN_ROOT}/cli/devops-cli.js logs fetch \
--type build \
--id {build_id}
Display:
🔨 Build Logs
Build ID: {build_id}
Status: {status}
Branch: {branch}
Duration: {duration}
─────────────────────────────────────────
[00:00] Starting build...
[00:02] Installing dependencies...
[00:15] Running npm install...
[00:45] Dependencies installed (245 packages)
[00:46] Running build script...
[01:20] Compiling TypeScript...
[01:55] Build completed successfully
[01:56] Generating artifacts...
[02:00] Build finished
─────────────────────────────────────────
Build artifacts:
- app.zip (15.2 MB)
- source-map.json (324 KB)
Exit code: 0
Step 5: Fetch Deployment Logs
For /devops:logs --deployment {deployment_id}:
node ${CLAUDE_PLUGIN_ROOT}/cli/devops-cli.js logs fetch \
--type deployment \
--id {deployment_id}
Display:
🚀 Deployment Logs
Deployment ID: {deployment_id}
Version: {version}
Environment: {environment}
Status: {status}
─────────────────────────────────────────
[00:00] Starting deployment...
[00:01] Validating configuration...
[00:02] Uploading artifacts...
[00:15] Artifacts uploaded (15.2 MB)
[00:16] Provisioning resources...
[00:30] Starting application...
[00:45] Health check: passed
[00:46] Deployment complete
─────────────────────────────────────────
URL: {deployment_url}
Duration: {duration}
Step 6: Stream Logs (Follow Mode)
For /devops:logs --follow:
node ${CLAUDE_PLUGIN_ROOT}/cli/devops-cli.js logs stream
Show:
📡 Streaming logs (Ctrl+C to stop)...
{timestamp} [INFO] Incoming request: GET /api/data
{timestamp} [INFO] Database query executed
{timestamp} [INFO] Response sent: 200 OK
{timestamp} [INFO] Request completed in 45ms
{timestamp} [WARN] Cache miss for key: user_123
{timestamp} [INFO] Cache refreshed
... (continues streaming)
Note: In Claude Code, we can't truly stream indefinitely, so:
- Stream for 30 seconds
- Ask: "Continue streaming?"
- If yes, stream another 30 seconds
- If no, STOP
Step 7: Filter Logs
For /devops:logs --error:
node ${CLAUDE_PLUGIN_ROOT}/cli/devops-cli.js logs fetch \
--filter error \
--lines 100
Display:
❌ Error Logs (last 100 errors)
{timestamp} [ERROR] Database connection lost
Stack trace:
at DatabaseManager.connect (db.js:45)
at Server.start (server.js:20)
{timestamp} [ERROR] Unhandled promise rejection
Error: Timeout waiting for response
at fetch (api.js:102)
{timestamp} [ERROR] Memory limit exceeded
Current: 512 MB / Limit: 512 MB
Total errors: {error_count}
Most common: {most_common_error} ({count} occurrences)
💡 View full context: /devops:logs --since 1h
Step 8: Time-Based Filtering
For /devops:logs --since {time}:
Supported formats:
1h- Last 1 hour30m- Last 30 minutes24h- Last 24 hours2d- Last 2 days
node ${CLAUDE_PLUGIN_ROOT}/cli/devops-cli.js logs fetch \
--since {time}
Step 9: Export Logs
Offer: "Would you like to save these logs to a file?"
-
If yes:
node ${CLAUDE_PLUGIN_ROOT}/cli/devops-cli.js logs export \ --output ".devops/logs/{timestamp}.log"Show: "✓ Logs saved to .devops/logs/{timestamp}.log"
Netlify Logs:
Netlify provides several types of logs:
- Build Logs - Complete build output with npm install, build script execution, etc.
- Function Logs - Netlify Functions execution logs (if you use serverless functions)
- Deploy Logs - Deployment process logs
Available via this plugin:
- ✓ Build logs (complete build output)
- ✓ Deployment logs (deployment status and progress)
- ✓ Function logs (if functions are deployed)
Note: Real-time application logs require Netlify Functions. For static sites, only build and deploy logs are available.
Log Levels:
- INFO - General information
- WARN - Warning messages
- ERROR - Error messages
IMPORTANT:
- Logs fetched via Netlify API (zero-token CLI)
- Build logs available for last 50 builds
- Function logs available for last 24 hours
- Real-time streaming has 30s intervals in Claude Code
- Exported logs saved to
.devops/logs/