Dashboard to view your http client requests in laravel application
Laravel Blanket is a package with wraps laravel http client requests and provide logs for request and response, also give option to retry any request from dashboard and more...
Desclaimer
This is highly opinionated fun project which provides very simple web interface and log monitoring. If you need advance monitoring tools consider trying Debugbar, Sentry and Bugsnag.
Live Demo
Checkout the demo here to find out more options and feature...
Screenshots
Requirements
- PHP >= 8.0
- Laravel >= 8.45
Installation
You can install the package via composer:
composer require ahmadwaleed/laravel-blanket
The package will automatically register a service provider.
After installing Blanket, publish its assets using the blanket:wrap Artisan command.
php artisan blanket:wrap
This package comes with a migration to store all outgoing http client requests. You can publish the migration file using:
php artisan vendor:publish --provider="Ahmadwaleed\Blanket\BlanketServiceProvider" --tag="blanket-migrations"
Run the migrations with:
php artisan migrate
Optionally you can publish the blanket configuration file:
php artisan vendor:publish --provider="Ahmadwaleed\Blanket\BlanketServiceProvider" --tag="blanket-config"
This is the contents of the published config file that will be published as config/blanket.php
return [
/*
|--------------------------------------------------------------------------
| Dashboard Enabled
|--------------------------------------------------------------------------
|
| Here you can specify whether to show dashboard or not.
|
*/
'enabled' => env('BLANKET_ENABLED', true),
/*
|--------------------------------------------------------------------------
| Hide Sensitive Data
|--------------------------------------------------------------------------
|
| Here you can specify the fields which might contain sensitive data, those
| fields will hidden when saving logs. You can also specify nested keys in
| config. Example:
| 'response' => [
| 'client.id',
| 'client.secret',
| ],
*/
'hide_sensitive_data' => [
'headers' => [
'Authorization',
'php-auth-pw',
],
'request' => [
'password',
'password_confirmation',
],
'response' => []
],
/*
|--------------------------------------------------------------------------
| Blanket Path
|--------------------------------------------------------------------------
|
| This is the URI path where Blanket will be accessible from. Feel free
| to change this path to anything you like.
|
*/
'path' => env('BLANKET_PATH', 'blanket'),
/*
|--------------------------------------------------------------------------
| Blanket Route Middleware
|--------------------------------------------------------------------------
|
| These middleware will be assigned to every Blanket route, giving you
| the chance to add your own middleware to this list or change any of
| the existing middleware. Or, you can simply stick with this list.
|
*/
'middlewares' => [
// 'web',
\Ahmadwaleed\Blanket\Http\Middlewares\Authorize::class,
],
/*
|--------------------------------------------------------------------------
| Log Response limit
|--------------------------------------------------------------------------
|
| This is maximum limit blanket is allowed to log response content,
| if response content exceed this limit the response should be purged.
| The default limit is 64 KB which is max limit, feel free to set lower limit.
|
*/
'log_response_limit' => env('BLANKET_RESPONSE_LIMIT', 64),
/*
|--------------------------------------------------------------------------
| Logs Per Page
|--------------------------------------------------------------------------
|
| How many logs should be fetched per page for dashboard, setting this option
| to a big number may reduce dashboard performance.
|
*/
'logs_per_page' => env('BLANKET_LOGS_PER_PAGE', 100),
/*
|--------------------------------------------------------------------------
| Prune Blanket Logs Duration
|--------------------------------------------------------------------------
|
| Duration in which blanket logs will be deleted periodically
| that are no longer needed. You should schedule the model:prune
| Artisan command in your application's App\Console\Kernel class.
| You are free to specify the appropriate interval here at which
| this command should be run:
| ```
| $schedule->command('model:prune', [
| '--model' => [Ahmadwaleed\Blanket\Models\Log::class],
| ])->daily();
|
*/
'prune_logs_duration' => env('PRUNE_LOGS_DURATION', now()->subMonth()),
];
Credits
License
The MIT License (MIT). Please see License File for more information.