Guzzle middleware to log requests to PHP DebugBar's timeline
Guzzle middleware to log requests to DebugBar's timeline.
composer require hannesvdvreken/guzzle-debugbar --dev
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.
$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]);
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.
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.
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.
To test your code before pushing, run the unit test suite.
vendor/bin/phpunit