Guzzle middleware to log requests and responses

v2.0.0 2023-07-19 20:04 UTC

This package is auto-updated.

Last update: 2024-02-19 21:48:00 UTC


Author License Latest Version Build Status Scrutinizer Scrutinizer Coverage


composer require rtheunissen/guzzle-log-middleware


use Concat\Http\Middleware\Logger;


You can use either a PSR-3 logger (such as Monolog) or a callable that accepts a log level, message, and context as an array.

$middleware = new Logger($logger);


$middleware = new Logger(function ($level, $message, array $context) {
    // Log the message

Log level

You can set a log level as a string or a callable that accepts a response. If the response is not set, it can be assumed that it's a request-only log, or that the request has been rejected. If the log level is not set, the default log level will be used which is LogLevel::NOTICE for status codes >= 400, or LogLevel::INFO otherwise.

use Psr\Log\LogLevel;



$middleware->setLogLevel(function ($response) {
    // Return log level


You can set a message formatter as a MessageFormatter or a callable that accepts a request, response, as well as a reason when a request has been rejected.



$middleware->setFormatter(function ($request, $response, $reason) {
    // Return log message


$middleware = new Logger($logger, $formatter);

Request logging

A request will only be logged when its response is received. You can enable request logging by using $middleware->setRequestLoggingEnabled(true), which will log a request when it is requested, as well as its response when it is received. Any $response references will be null in the case where only the request exists.


This package is designed to function as Guzzle 6/7 Middleware.