hannesvdvreken / guzzle-debugbar
A Guzzle middleware that logs requests to debugbar's timeline
Fund package maintenance!
hannesvdvreken
barryvdh
Installs: 290 842
Dependents: 1
Suggesters: 0
Security: 0
Stars: 74
Watchers: 3
Forks: 12
Open Issues: 0
Requires
- php: >=7.2
- hannesvdvreken/guzzle-profiler: ^2
- maximebf/debugbar: ^1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.2.20
- illuminate/support: >=6
- phpunit/phpunit: ^8.2.3
README
⚠️ This project is up for adoption. Get in touch if you're interested in actively maintaining 3 closely related packages.
Guzzle middleware to log requests to DebugBar's timeline.
Installation
composer require hannesvdvreken/guzzle-debugbar --dev
Usage
Just six lines of code are needed to log your requests to DebugBar's timeline.
$debugBar = new StandardDebugBar(); // or when using Laravel: $debugBar = app('debugbar'); // Get data collector. $timeline = $debugBar->getCollector('time'); // Wrap the timeline. $profiler = new \GuzzleHttp\Profiling\Debugbar\Profiler($timeline); // Add the middleware to the stack $stack = \GuzzleHttp\HandlerStack::create(); $stack->unshift(new \GuzzleHttp\Profiling\Middleware($profiler)); // New up the client with this handler stack. $client = new \GuzzleHttp\Client(['handler' => $stack]);
Now $client
is ready to make requests. Every request is now logged to the timeline.
Recommended: use Guzzle's Log middleware
$debugBar = new StandardDebugBar(); // or when using Laravel: $debugBar = app('debugbar'); // PSR-3 logger: $logger = $debugBar->getCollector('messages'); // Create a new Log middleware. $stack->push(\GuzzleHttp\Middleware::log($logger, new \GuzzleHttp\MessageFormatter())); // New up the client with this handler stack. $client = new \GuzzleHttp\Client(['handler' => $stack]);
Support
Laravel
It is recommended to have my friend Barry's laravel-debugbar installed and configured. Make sure to include his and our service providers your app's providers
array:
'providers' => [ ... Barryvdh\Debugbar\ServiceProvider::class, GuzzleHttp\Profiling\Debugbar\Support\Laravel\ServiceProvider::class, ],
If you want to use a different DebugBar\DebugBar
instance, create a ServiceProvider that binds an
instance with the key debugbar
. For example with this register method:
public function register() { $this->app->singleton('debugbar', function () { return new \DebugBar\StandardDebugBar(); }); }
Be sure to create every client (type hint with GuzzleHttp\ClientInterface
or GuzzleHttp\Client
) via the IoC container.
FAQ:
I get one of these errors:
'time' is not a registered collector
'exceptions' is not a registered collector
It means you disabled the time
collector and/or the exceptions
collector in your packages/barryvdh/laravel-debugbar/config.php
. These are enabled by default. This package depends on it, so please enable them both.
Contributing
Feel free to make a pull request. Please try to be as
PSR-2
compliant as possible. Fix Code Style quickly by running vendor/bin/php-cs-fixer fix
. Give a good description of what is supposed to be added/changed/removed/fixed.
Testing
To test your code before pushing, run the unit test suite.
vendor/bin/phpunit