-
-
Notifications
You must be signed in to change notification settings - Fork 1
Basic Usage
Laravel ChronoTrace helps you understand what happens during request execution by capturing and replaying traces. This guide covers the fundamental concepts and common workflows.
ChronoTrace automatically records traces based on your configuration. By default, it records traces when errors occur:
# Check current recording status
php artisan chronotrace:diagnose
# Start manual recording for specific requests
php artisan chronotrace:record --duration=30sList all captured traces to see what's been recorded:
# List recent traces
php artisan chronotrace:list
# List with filtering
php artisan chronotrace:list --status=error --limit=10
php artisan chronotrace:list --method=POST --route="api/*"Example output:
ββββββββββββββ¬ββββββββββββββββββββββ¬βββββββββ¬βββββββββββ¬ββββββββββββββββββββββββββ¬βββββββββββ
β Trace ID β Timestamp β Method β Status β Route β Duration β
ββββββββββββββΌββββββββββββββββββββββΌβββββββββΌβββββββββββΌββββββββββββββββββββββββββΌβββββββββββ€
β abc123... β 2024-08-06 14:30:15 β POST β 500 β api/users β 245ms β
β def456... β 2024-08-06 14:28:42 β GET β 200 β dashboard β 89ms β
β ghi789... β 2024-08-06 14:25:18 β PUT β 422 β api/users/123 β 156ms β
ββββββββββββββ΄ββββββββββββββββββββββ΄βββββββββ΄βββββββββββ΄ββββββββββββββββββββββββββ΄βββββββββββ
Replay a specific trace to see detailed execution flow:
# Replay complete trace
php artisan chronotrace:replay abc123def456
# Filter by event types
php artisan chronotrace:replay abc123def456 --filter=database,http
php artisan chronotrace:replay abc123def456 --filter=cacheEvery trace starts with basic request information:
ββ REQUEST INFORMATION βββββββββββββββββββββββββββββββββββββββββ
β Trace ID: abc123def456789 β
β Method: POST /api/users β
β Status: 500 Internal Server Error β
β Duration: 245ms β
β Memory: 12.5MB β
β Timestamp: 2024-08-06 14:30:15 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Events are displayed chronologically with timing information:
ββ DATABASE EVENTS βββββββββββββββββββββββββββββββββββββββββββββ
β [+0ms] SELECT * FROM users WHERE email = ? [john@example.com] (2ms)
β [+15ms] INSERT INTO user_activities (user_id, action) VALUES (?, ?) [123, 'login'] (1ms)
β [+45ms] UPDATE users SET last_login = ? WHERE id = ? ['2024-08-06 14:30:15', 123] (3ms)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββ HTTP EVENTS βββββββββββββββββββββββββββββββββββββββββββββββββ
β [+120ms] POST https://api.external.com/webhook (89ms)
β Status: 200 OK
β Payload: {"user_id": 123, "action": "registered"}
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββ CACHE EVENTS ββββββββββββββββββββββββββββββββββββββββββββββββ
β [+25ms] GET user:123:profile (HIT)
β [+180ms] SET user:123:last_activity (3600s TTL)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ChronoTrace offers flexible recording modes to suit different environments:
Record all requests for comprehensive debugging:
# In .env
CHRONOTRACE_MODE=always
CHRONOTRACE_ENABLED=trueRecord only errors and sample successful requests:
# In .env
CHRONOTRACE_MODE=record_on_error
CHRONOTRACE_SAMPLE_RATE=0.001 # 0.1% of successful requestsRecord specific routes or conditions:
# In .env
CHRONOTRACE_MODE=targeted
# In configuration
'targeted_routes' => [
'api/orders/*',
'checkout/*',
'admin/reports/*'
],Focus on specific types of events during analysis:
php artisan chronotrace:replay {trace-id} --filter=databaseShows:
- SQL queries with bindings
- Execution times
- Connection information
php artisan chronotrace:replay {trace-id} --filter=cacheShows:
- Cache hits/misses
- Keys accessed
- TTL information
php artisan chronotrace:replay {trace-id} --filter=httpShows:
- External API calls
- Request/response headers
- Response times
php artisan chronotrace:replay {trace-id} --filter=jobsShows:
- Dispatched jobs
- Job payloads
- Queue connections
-
Find the error trace:
php artisan chronotrace:list --status=error
-
Replay the trace:
php artisan chronotrace:replay {trace-id} -
Focus on the issue:
- Look for the last successful database query
- Check HTTP calls that might have failed
- Examine job dispatches that could have thrown exceptions
-
Find slow requests:
php artisan chronotrace:list --min-duration=1000 # > 1 second -
Analyze the bottleneck:
php artisan chronotrace:replay {trace-id} -
Identify issues:
- Long-running database queries
- Excessive cache misses
- Slow external API calls
-
Filter HTTP events:
php artisan chronotrace:replay {trace-id} --filter=http -
Check for:
- Failed API calls
- Timeout issues
- Incorrect request/response formats
ChronoTrace automatically purges old traces, but you can manually clean up:
# Remove traces older than 7 days
php artisan chronotrace:purge --days=7
# Remove all traces
php artisan chronotrace:purge --all
# Remove only error traces
php artisan chronotrace:purge --status=error# See storage statistics
php artisan chronotrace:diagnose --storage# Temporarily disable
php artisan down --secret="maintenance-key"
CHRONOTRACE_ENABLED=false
# Re-enable
CHRONOTRACE_ENABLED=true# In .env - disable noisy events
CHRONOTRACE_CAPTURE_CACHE=false
CHRONOTRACE_CAPTURE_EVENTS=false
# Keep essential debugging events
CHRONOTRACE_CAPTURE_DATABASE=true
CHRONOTRACE_CAPTURE_HTTP=true
CHRONOTRACE_CAPTURE_JOBS=true-
Record everything: Use
alwaysmode to understand your application flow - Focus your analysis: Use event filtering to reduce noise
- Regular cleanup: Don't let traces accumulate indefinitely
-
Sample + errors: Use
record_on_errorwith low sample rate - Test edge cases: Manually record during integration testing
- Monitor performance: Watch for slow traces
- Error-only mode: Minimize performance impact
- Scrub PII: Ensure sensitive data is masked
- Automate cleanup: Set appropriate retention policies
- Configuration - Detailed configuration options
- Recording Modes - Advanced recording strategies
- Event Capturing - Configure what events to capture
- Commands - Complete command reference
- Troubleshooting - Common issues and solutions
Need help? Check the Troubleshooting Guide or open an issue on GitHub.
- Getting Started - Install and configure ChronoTrace
- Examples - Real-world debugging scenarios
- Production Guide - Deploy safely in production
- Troubleshooting - Solve common issues
| Section | Page | Description |
|---|---|---|
| π Basics | Your First Trace | Step-by-step beginner guide |
| ποΈ Config | Recording Modes | Choose when to record traces |
| π‘οΈ Security | Security & PII | Protect sensitive data |
| π§ Tools | Commands | Complete command reference |
- π¬ GitHub Discussions - Community support
- π Report Issues - Bug reports & feature requests
- π§ Contact - Direct support
- π‘ Feature Requests - Suggest improvements
ChronoTrace helps Laravel developers debug applications faster with intelligent request tracing.
Made with β€οΈ by Grazulex β’ Documentation updated August 2024