logRequest($request); // Process the request $response = $next($request); // Log the response $this->logResponse($request, $response); return $response; } private function logRequest(Request $request): void { Log::channel('api')->info('API Request', [ 'method' => $request->method(), 'url' => $request->fullUrl(), 'headers' => $request->headers->all(), 'body' => $request->all(), 'ip' => $request->ip(), 'user_id' => $request->user()?->id, 'timestamp' => now()->toIso8601String(), ]); } private function logResponse(Request $request, Response $response): void { Log::channel('api')->info('API Response', [ 'url' => $request->fullUrl(), 'status' => $response->getStatusCode(), 'headers' => $response->headers->all(), 'body' => $response->getContent(), 'duration_ms' => round((microtime(true) - LARAVEL_START) * 1000), 'timestamp' => now()->toIso8601String(), ]); } }