Files
2025-11-29 17:59:27 +08:00

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

  1. Check if .devops/config.json exists
  2. Read configuration to determine platform
  3. Validate platform is supported:
    • If platform is NOT "netlify", show error:
    ❌ Platform Not Supported: {platform}
    
    This plugin currently supports Netlify only.
    
    To switch to Netlify: /devops:init
    
    Supported platforms: Netlify
    
    Then STOP.

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:

  1. Stream for 30 seconds
  2. 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 hour
  • 30m - Last 30 minutes
  • 24h - Last 24 hours
  • 2d - 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:

  1. Build Logs - Complete build output with npm install, build script execution, etc.
  2. Function Logs - Netlify Functions execution logs (if you use serverless functions)
  3. 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/