From 3bac384e280ce145e611b4295c41a4bb07642372 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Thu, 28 Dec 2023 22:58:05 +0800 Subject: [PATCH 1/2] api response time logging --- app/Http/Kernel.php | 1 + app/Http/Middleware/ApiResponseTimeLog.php | 32 ++++++++++++++++++++++ config/logging.php | 6 ++++ 3 files changed, 39 insertions(+) create mode 100644 app/Http/Middleware/ApiResponseTimeLog.php diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 93731db4..c23e442b 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -45,6 +45,7 @@ class Kernel extends HttpKernel \Illuminate\View\Middleware\ShareErrorsFromSession::class, VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, + \App\Http\Middleware\ApiResponseTimeLog::class, ], 'api' => [ diff --git a/app/Http/Middleware/ApiResponseTimeLog.php b/app/Http/Middleware/ApiResponseTimeLog.php new file mode 100644 index 00000000..fe8e6c11 --- /dev/null +++ b/app/Http/Middleware/ApiResponseTimeLog.php @@ -0,0 +1,32 @@ +route(); + $routeName = $route ? $route->getName() : 'undefined'; + $uri = $request->getPathInfo(); + + $startTime = microtime(true); // Start time + + $response = $next($request); // Handle the request + + $endTime = microtime(true); // End time + $responseTime = $endTime - $startTime; // Calculate the response time + + Log::channel('apiResponseTimeLog')->info("\nRequest to route: {$uri} \nRoute name: {$routeName} \nTime Taken: " . number_format($responseTime * 1000, 2) . "ms\n"); + + return $response; + } +} diff --git a/config/logging.php b/config/logging.php index fb872693..b32905d3 100644 --- a/config/logging.php +++ b/config/logging.php @@ -104,6 +104,12 @@ return [ 'path' => storage_path('logs/regenerateInvoice.log'), 'level' => 'info', ], + + 'apiResponseTimeLog' => [ + 'driver' => 'single', + 'path' => storage_path('logs/apiResponseTime.log'), + 'level' => 'info', + ], ], ]; From 7e6c2b5d7c270f903d26da0cb1119872a75969a5 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Thu, 28 Dec 2023 23:07:06 +0800 Subject: [PATCH 2/2] add web response time log --- app/Http/Kernel.php | 3 +- app/Http/Middleware/WebResponseTimeLog.php | 32 ++++++++++++++++++++++ config/logging.php | 6 ++++ 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 app/Http/Middleware/WebResponseTimeLog.php diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index c23e442b..45a41c70 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -45,12 +45,13 @@ class Kernel extends HttpKernel \Illuminate\View\Middleware\ShareErrorsFromSession::class, VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, - \App\Http\Middleware\ApiResponseTimeLog::class, + \App\Http\Middleware\WebResponseTimeLog::class, ], 'api' => [ 'throttle:300,1', \Illuminate\Routing\Middleware\SubstituteBindings::class, + \App\Http\Middleware\ApiResponseTimeLog::class, ], 'apipub' => [ diff --git a/app/Http/Middleware/WebResponseTimeLog.php b/app/Http/Middleware/WebResponseTimeLog.php new file mode 100644 index 00000000..f28ce3aa --- /dev/null +++ b/app/Http/Middleware/WebResponseTimeLog.php @@ -0,0 +1,32 @@ +route(); + $routeName = $route ? $route->getName() : 'undefined'; + $uri = $request->getPathInfo(); + + $startTime = microtime(true); // Start time + + $response = $next($request); // Handle the request + + $endTime = microtime(true); // End time + $responseTime = $endTime - $startTime; // Calculate the response time + + Log::channel('webResponseTimeLog')->info("\nRequest to route: {$uri} \nRoute name: {$routeName} \nTime Taken: " . number_format($responseTime * 1000, 2) . "ms\n"); + + return $response; + } +} diff --git a/config/logging.php b/config/logging.php index b32905d3..e95c7d18 100644 --- a/config/logging.php +++ b/config/logging.php @@ -110,6 +110,12 @@ return [ 'path' => storage_path('logs/apiResponseTime.log'), 'level' => 'info', ], + + 'webResponseTimeLog' => [ + 'driver' => 'single', + 'path' => storage_path('logs/webResponseTimeLog.log'), + 'level' => 'info', + ], ], ];