ahmadwaleed/laravel-blanket

A blanket which wraps your laravel http client, and provides dashboard to access logs, retry and debug your http requests.

Fund package maintenance!
ahmadwaleed

v1.2.0 2021-09-30 17:38 UTC

This package is auto-updated.

Last update: 2024-04-20 10:14:36 UTC


README

Banner

Dashboard to view your http client requests in laravel application

Packagist License Packagist Version GitHub repo size Packagist Downloads

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

screen shot light screen shot dark

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.