diff --git a/composer.json b/composer.json index 8cd0822..e573a8c 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "ucan-lab/laravel-blink-logger", - "description": "Comprehensive Logging Tool for Database Activities in Laravel.", + "description": "Comprehensive Logging Tool for Laravel.", "type": "library", "license": "MIT", "autoload": { @@ -16,7 +16,7 @@ ], "require": { "php": "^8.0.2", - "laravel/framework": "^9.0" + "laravel/framework": "^9.0|^10.0|^11.0" }, "config": { "optimize-autoloader": true, diff --git a/config/blink-logger.php b/config/blink-logger.php index 5173aeb..8602dad 100644 --- a/config/blink-logger.php +++ b/config/blink-logger.php @@ -16,4 +16,22 @@ 'enabled' => env('LOG_SQL_ENABLED', false), 'slow_query_time' => env('LOG_SQL_SLOW_QUERY_TIME', 2000), // ms ], + + /* + |-------------------------------------------------------------------------- + | Request Logger + |-------------------------------------------------------------------------- + */ + 'request' => [ + 'enabled' => env('LOG_REQUEST_ENABLED', false), + 'channel' => config('logging.default'), + 'exclude' => [ + '_debugbar', + ], + 'middleware' => \LaravelBlinkLogger\Http\Middleware\RequestLogger::class, + 'middleware_group_names' => [ + 'web', + 'api', + ], + ], ]; diff --git a/src/Http/Middleware/RequestLogger.php b/src/Http/Middleware/RequestLogger.php new file mode 100644 index 0000000..809a3ba --- /dev/null +++ b/src/Http/Middleware/RequestLogger.php @@ -0,0 +1,35 @@ +isWrite($request)) { + $this->write($request); + } + } + + return $next($request); + } + + protected function isWrite(Request $request): bool + { + return ! in_array($request->path(), config('blink-logger.request.exclude'), true); + } + + protected function write(Request $request): void + { + $data = [ + 'request' => $request->all(), + ]; + + Log::channel(config('blink-logger.request.channel'))->debug(sprintf('%s: %s', $request->method(), $request->fullUrl()), $data); + } +} diff --git a/src/Providers/LaravelBlinkLoggerServiceProvider.php b/src/Providers/LaravelBlinkLoggerServiceProvider.php index fda3f84..dcd5db2 100644 --- a/src/Providers/LaravelBlinkLoggerServiceProvider.php +++ b/src/Providers/LaravelBlinkLoggerServiceProvider.php @@ -10,6 +10,8 @@ use Illuminate\Database\Events\TransactionBeginning; use Illuminate\Database\Events\TransactionCommitted; use Illuminate\Database\Events\TransactionRolledBack; +use Illuminate\Foundation\Http\Kernel; +use Illuminate\Routing\Router; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Event; use Illuminate\Support\Facades\Log; @@ -17,11 +19,19 @@ class LaravelBlinkLoggerServiceProvider extends ServiceProvider { - public function boot(): void + public function boot(Router $router, Kernel $kernel): void { $this->publishes([ __DIR__ . '/../../config/blink-logger.php' => config_path('blink-logger.php'), - ]); + ], 'blink-logger'); + + $middleware = config('blink-logger.request.middleware'); + $middlewareGroupNames = config('blink-logger.request.middleware_group_names'); + foreach ($middlewareGroupNames as $middlewareGroupName) { + $router->middlewareGroup($middlewareGroupName, [$middleware]); + } + + $kernel->prependToMiddlewarePriority($middleware); } public function register(): void