swisnl/guzzle-bugsnag-breadcrumbs-middleware

Guzzle middleware that logs Bugsnag breadcrumbs

1.1.0 2022-01-24 11:21 UTC

This package is auto-updated.

Last update: 2024-11-22 19:53:12 UTC


README

Latest Version on Packagist Software License Buy us a tree Build Status Coverage Status Quality Score Total Downloads Made by SWIS

This is a middleware for Guzzle 7 that leaves Bugsnag breadcrumbs for all requests.

⚠️ Please make sure you don't log sensitive information to Bugsnag and properly configure this middleware to redact secrets. ⚠️

Install

Via Composer

composer require swisnl/guzzle-bugsnag-breadcrumbs-middleware

Usage

use Bugsnag\Client as Bugsnag;
use GuzzleHttp\Client as Guzzle;
use GuzzleHttp\HandlerStack;
use Swis\Guzzle\Bugsnag\BreadcrumbMiddleware;

$bugsnag = Bugsnag::make();

$stack = HandlerStack::create();
$stack->push(new BreadcrumbMiddleware($bugsnag));
$client = new Guzzle(['handler' => $stack]);

Now when you send a request, a Bugsnag breadcrumb is logged with the following metadata:

  • method
  • uri
  • status code
  • response body (summary), in case of client or server exceptions (status code >= 400)
  • duration

Laravel

Using Laravel? Simply use the factory method to create the middleware from the Bugsnag facade: BreadcrumbMiddleware::fromFacade().

Config

You can configure the middleware using the constructor arguments:

$bugsnag

Your (preconfigured) Bugsnag client.

$name

The name of the breadcrumb.

$redactedStrings

A list of secret strings, such as API keys, that should be filtered out of the metadata.

$truncateBodyAt

The length of the response body summary, which is added to the breadcrumb in case of client or server exceptions. Use null to disable logging response/request body.

By default, it does not log the request body and only logs the response body in case of client or server exceptions (status code >= 400). If you'd like to change this behaviour, you can provide your own GuzzleHttp\BodySummarizerInterface implementation. You can use the default GuzzleHttp\BodySummarizer for example, to log all request and response bodies. Please be aware not to log sensitive information!

Change log

Please see CHANGELOG for more information on what has changed recently.

Testing

composer test

Contributing

Please see CONTRIBUTING and CODE_OF_CONDUCT for details.

Security

If you discover any security related issues, please email security@swis.nl instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.

This package is Treeware. If you use it in production, then we ask that you buy the world a tree to thank us for our work. By contributing to the Treeware forest you’ll be creating employment for local families and restoring wildlife habitats.

SWIS ❤️ Open Source

SWIS is a web agency from Leiden, the Netherlands. We love working with open source software.