lupka / laravel-api-logger
Logs requests/responses inside your app via middleware.
Installs: 8
Dependents: 1
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 0
Open Issues: 0
Type:package
Requires
- php: ^7.2
- illuminate/support: 5.7.*|5.8.*|^6.0
Requires (Dev)
- orchestra/testbench: 3.7.*|3.8.*|^4.0
- phpunit/phpunit: ^8.0
This package is auto-updated.
Last update: 2024-10-22 18:43:14 UTC
README
By default, this package logs the following data:
- Method (
GET
,POST
, etc) - URL
- Client IP Address
- Client User Agent
- Request Body
- Request Query Parameters
- User ID (for authenticated requests)
- HTTP Status Code (
200
,404
, etc) - Response Body (if JSON)
- Exception Type/Message if an error occurs
for each route where the middleware is installed.
Installation
You can install the package via Composer:
composer require lupka/laravel-api-logger
The package will automatically register its service provider.
Then run the migration to add the api_logs
table to your database:
php artisan migrate
Publish the config file (api_logger.php
):
php artisan vendor:publish --provider="Lupka\ApiLogger\ApiLoggerServiceProvider" --tag="config"
Now you can install the api-logger
middleware as needed. For example, in app/Http/Kernel.php
(to log every API request):
protected $middlewareGroups = [ ... 'api' => [ ... 'api-logger', ], ];
Or, you can add the alias to a specific route or group:
Route::post('/test', 'TestController@test')->middleware('api-logger');
Viewing Logs
Logs are stored in the api_logs
table. There's an Eloquent model included in the package (Lupka\ApiLogger\Models\ApiLog
) for querying records, etc. For example, to get all logs:
Lupka\ApiLogger\Models\ApiLog::all();
Clearing Logs
Logs can be cleared by scheduling the api-logger:clear
job in your app/Console/Kernel.php
file:
protected function schedule(Schedule $schedule) { ... $schedule->command('api-logger:clear')->daily(); }
Any logs older than 30 days will be cleared by default. This can be changed by modifying the log_expiry
config value.
Log -> User Relationship
The ApiLog
Eloquent model contains a relationship ($log->user()
) with the default App\User
model. If your user model has a different class name, you can change that relationship using the user_class
config value.
License
Licensed under the MIT license. See License File for more information.