PHP code example of iazaran / trace-replay
1. Go to this page and download the library: Download iazaran/trace-replay library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
iazaran / trace-replay example snippets
protected $middlewareGroups = [
'web' => [
// ...
\TraceReplay\Http\Middleware\TraceMiddleware::class,
],
];
->withMiddleware(function (Middleware $middleware) {
$middleware->append(\TraceReplay\Http\Middleware\TraceMiddleware::class);
})
return [
'enabled' => env('TRACE_REPLAY_ENABLED', true),
// 0.1 = trace 10% of requests/jobs/commands
'sample_rate' => env('TRACE_REPLAY_SAMPLE_RATE', 1.0),
// Disable on low-cost production servers if query-log overhead is too high
'track_db_queries' => env('TRACE_REPLAY_TRACK_DB', true),
// Truncate captured JSON fields after 64 KB by default
'max_payload_size' => env('TRACE_REPLAY_MAX_PAYLOAD_SIZE', 65536),
// Automatically mask these keys in payloads, headers, and URL query strings
'mask_fields' => ['password', 'token', 'api_key', 'authorization', 'cookie', 'secret'],
// Query bindings can contain PII; keep disabled in production unless needed
'track_db_query_bindings' => env('TRACE_REPLAY_TRACK_DB_BINDINGS', false),
// Dashboard security: add a Gate for tighter production access
'middleware' => ['web', 'auth'],
'route_prefix' => env('TRACE_REPLAY_ROUTE_PREFIX', 'trace-replay'),
// Replay safety: mutating methods are blocked and override hosts are restricted
'replay' => [
'allow_mutating_methods' => env('TRACE_REPLAY_REPLAY_MUTATING', false),
'allowed_hosts' => array_filter(explode(',', env('TRACE_REPLAY_REPLAY_ALLOWED_HOSTS', ''))),
],
// Agent/MCP API is disabled until this token is set
'api' => [
'token' => env('TRACE_REPLAY_API_TOKEN'),
'middleware' => ['api'],
'route_prefix' => env('TRACE_REPLAY_API_ROUTE_PREFIX', 'api/trace-replay'),
'max_steps' => env('TRACE_REPLAY_API_MAX_STEPS', 500),
],
// AI Troubleshooting (Drivers: openai, anthropic, ollama)
'ai' => [
'driver' => env('TRACE_REPLAY_AI_DRIVER', 'openai'),
'api_key' => env('TRACE_REPLAY_AI_KEY'),
'model' => env('TRACE_REPLAY_AI_MODEL', 'gpt-4o'),
'base_url' => env('TRACE_REPLAY_AI_BASE_URL'),
],
// Async batch persistence via queue (Reduces overhead)
'queue' => [
'enabled' => env('TRACE_REPLAY_QUEUE_ENABLED', false),
],
// Auto-tracing
'auto_trace' => [
'jobs' => true,
'commands' => false,
'livewire' => true,
'capture_job_payload' => false,
],
];
use TraceReplay\Facades\TraceReplay;
class BookingService
{
public function handleBooking(array $payload): void
{
TraceReplay::start('Flight Booking', ['channel' => 'web']);
try {
$inventory = TraceReplay::step('Validate Inventory', function () use ($payload) {
return Inventory::check($payload['flight_id']);
});
TraceReplay::checkpoint('Inventory validated', ['seats_left' => $inventory->seats]);
TraceReplay::context(['user_tier' => auth()->user()->tier]);
TraceReplay::step('Charge Credit Card', function () use ($payload) {
return PaymentGateway::charge($payload['amount']);
});
TraceReplay::end('success');
} catch (\Exception $e) {
TraceReplay::end('error');
throw $e;
}
}
}
use TraceReplay\Facades\TraceReplay;
public function test_booking_records_steps()
{
$fake = TraceReplay::fake();
$this->post('/book', ['flight_id' => 123]);
$fake->assertTraceStarted('Flight Booking');
$fake->assertStepRecorded('Validate Inventory');
$fake->assertStepRecorded('Charge Credit Card');
$fake->assertCheckpointRecorded('Inventory validated');
$fake->assertTraceEnded('success');
$fake->assertTraceCount(1);
}
'middleware' => ['web', 'auth', 'can:view-trace-replay'],
// app/Providers/AuthServiceProvider.php
Gate::define('view-trace-replay', function ($user) {
return in_array($user->email, config('trace-replay.admin_emails', []));
});
// app/Console/Kernel.php
$schedule->command('trace-replay:prune --days=30')->daily();
bash
php artisan trace-replay:install
php artisan migrate
bash
php artisan vendor:publish --tag=trace-replay-config
bash
php artisan migrate
bash
php artisan vendor:publish --tag=trace-replay-views
bash
php artisan trace-replay:doctor
bash
php artisan trace-replay:export {id} --format=json
php artisan trace-replay:export {id} --format=csv
php artisan trace-replay:export {id} --format=json --output=/tmp/trace.json
php artisan trace-replay:export --status=error --format=json # Export all error traces