correlate-php-psr-7
Overview
It's very difficult to track a request accross the system when we are working with microservices. We came out a solution for that. We generate a unique version 4 uuid for every request and every service passes this id via request header to other services. We call this correlation ID., (*1)
Packages
Installation
composer require proemergotech/correlate-php-psr-7
Setup for Slim 3 framework
To use this class as a middleware, you can use ->add( new ExampleMiddleware() );
function chain after the $app
, Route
, or group()
, which in the code below, any one of these, could represent $subject
., (*2)
$logger = $app['monolog']; // Must be \Monolog\Logger
// This is an optional callback function to set correlation id to a DIC.
$callback = function($correlationId) use ($app) {
$app->getContainer()['cid'] = $correlationId;
}
$subject->add(new \ProEmergotech\Correlate\Psr7\Psr7CorrelateMiddleware($logger, $callback));
Passing \Monolog\Logger
is optional., (*3)
Usage
This middleware automatically adds correlation id (coming from request header) to every log messages if you provided the optional \Monolog\Logger
instance to middleware's constructor., (*4)
You can access the correlation id IN A ROUTE CONTROLLER if you want to work with it., (*5)
$cid = $request->getAttribute(\ProEmergotech\Correlate\Correlate::getParamName());
Contributing
See CONTRIBUTING.md
file., (*6)
Credits
This package developed by Soma Szélpål at Pro Emergotech Ltd.., (*7)
License
This project is released under the MIT License., (*8)