composer require avariya/request-id-bundle
config/bundles.php (Laravel 5.4+) or AppKernel.php (Symfony):
Avariya\RequestIdBundle\AvariyaRequestIdBundle::class => ['all' => true],
X-Request-Id header if none is provided.monolog_support: true).Request::header('X-Request-Id') in controllers to correlate logs/DB entries.Request Handling:
KernelSubscriber injects a UUID if X-Request-Id is missing.Request object for later use:
$requestId = request()->header('X-Request-Id');
Logging Integration:
avariya_request_id:
monolog_support: true
{"request_id": "550e8400-e29b-41d4-a716-446655440000", ...}
Outbound API Calls (Guzzle):
avariya_request_id:
guzzle_middleware: true
csa/guzzle-bundle is installed for middleware support.DB::table('logs')->insert([
'request_id' => request()->header('X-Request-Id'),
'message' => 'User action',
]);
public function handle($request, Closure $next) {
$request->attributes->set('request_id', $request->header('X-Request-Id'));
return $next($request);
}
Guzzle Middleware Dependency:
csa/guzzle-bundle (not included by default). Install separately:
composer require csa/guzzle-bundle
config/packages/avariya_request_id.yaml:
guzzle_middleware:
guzzle_tag: guzzle.http_client
Monolog Version Conflicts:
monolog/monolog).monolog_support: false
Header Overrides:
X-Request-Id headers. If you need to force regeneration, exclude the header in middleware:
if (!$request->hasHeader('X-Request-Id')) {
$request->headers->set('X-Request-Id', Str::uuid()->toString());
}
php artisan tinker
>> \Symfony\Component\HttpFoundation\Request::createFromGlobals()->header('X-Request-Id');
config/packages/csa_guzzle.yaml:
clients:
default:
middleware: ['avariya_request_id']
generateId() method (extend the bundle or create a new subscriber).$processor = new \Avariya\RequestIdBundle\Processor\RequestIdProcessor();
$processor->setRequestId($requestId);
RequestId class.How can I help you explore Laravel packages today?