famdirksen / laravel-request-logger
A package to log requests to the database
Fund package maintenance!
robindirksen.com
Installs: 1 638
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
Requires
- php: ^7.2|^7.3|^7.4|^8.0|^9.0
- ext-json: *
- illuminate/bus: ^6.14.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/database: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/http: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.17
- phpunit/phpunit: ^9.5
- psalm/plugin-laravel: ^1.4
- vimeo/psalm: ^4.3
README
With this package you can log incoming requests to the database.
Installation
You can install the package via composer:
composer require famdirksen/laravel-request-logger
Usage
Note: this package could have a lot of impact on your database size/performance based on the amount of requests your application receives.
This packages uses a middleware to log requests to the (at this moment the only support driver) database.
Installation
Add the UriLoggerMiddleware
middleware to the route (or groups) you want to log.
<?php namespace App\Http; use Illuminate\Foundation\Http\Kernel as HttpKernel; class Kernel extends HttpKernel { protected $middlewareGroups = [ 'web' => [ 'request_logger', // ... ], 'api' => [ 'request_logger', // ... ], ]; protected $routeMiddleware = [ 'request_logger' => \Famdirksen\LaravelRequestLogger\Http\Middleware\UriLoggerMiddleware::class, ]; }
Publish the migrations using:
php artisan vendor:publish --provider="Famdirksen\LaravelRequestLogger\LaravelRequestLoggerServiceProvider"
And migrate the database for storing the events.
php artisan migrate
Clean the old records
It's possible to clean the old request logs using a job. This job can be dispatched using your cronjob (via php artisan schedule:run
).
Add this command to your app/Console/Kernel.php
to dispatch a new clear-request-logs command every hour:
$schedule->command(\Famdirksen\LaravelRequestLogger\Commands\ClearRequestLogsCommand::class)->hourly();
The job will delete the amount of request-logs based on your config. When the number of deleted records equals your limit, it will dispatch the job for the next xxx rows to delete. This method is used to prevent database lock.
Event handling
The events are dispatched to the queue after the response is sent to the user. For the best performance of this job, use a queue worker to process the jobs.
Disable logging
When you want to disable logging, you can set the REQUEST_LOGGER_ENABLED
variable to false
in your .env
file (ps, don't forget to clear your config cache php artisan config:clear
).
Specify the queue
It's possible to set a specific queue to run the request logger on. This can be done by setting the REQUEST_LOGGER_QUEUE
variable in your .env
. If no value is provided, it will use the default queue.
All new requests will be dispatched on the defined queue, but some may already be dispatched to the previous defined queue. To prevent loss of this data, you need to keep the old queue running until all jobs are processed.
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
License
The MIT License (MIT). Please see License File for more information.