From a4774fa463288878c9d40bd78c6b3ba3d3acbb41 Mon Sep 17 00:00:00 2001 From: Christian Jost Date: Tue, 13 Nov 2018 10:50:46 +0100 Subject: [PATCH 1/8] MAP-2890 Add duration to request logging --- src/Middleware/LogMiddleware.php | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/Middleware/LogMiddleware.php b/src/Middleware/LogMiddleware.php index ad83de1..585dd6b 100644 --- a/src/Middleware/LogMiddleware.php +++ b/src/Middleware/LogMiddleware.php @@ -4,6 +4,7 @@ use GuzzleHttp\Exception\RequestException; use GuzzleHttp\MessageFormatter; +use GuzzleHttp\TransferStats; use Psr\Http\Message\RequestInterface; use Psr\Http\Message\ResponseInterface; use Psr\Log\LoggerInterface; @@ -56,25 +57,29 @@ public function log(): \Closure return function (callable $handler) use ($logger, $formatter) { return function (RequestInterface $request, array $options) use ($handler, $logger, $formatter) { + $duration = null; + $options['on_stats'] = function (TransferStats $stats) use (&$duration) { + $duration = $stats->getTransferTime(); + }; + return $handler($request, $options)->then( - function (ResponseInterface $response) use ($logger, $request, $formatter) { + function (ResponseInterface $response) use ($logger, $request, $formatter, &$duration) { $message = $formatter->format($request, $response); $request->getBody()->rewind(); $context = [ 'request' => $this->normalizer->normalize($request), 'response' => $this->normalizer->normalize($response), 'client' => $this->clientName, + 'duration' => $duration, ]; $logger->info($message, $context); return $response; }, - function ($reason) use ($logger, $request, $formatter) { + function ($reason) use ($logger, $request, $formatter, &$duration) { $response = $reason instanceof RequestException ? $reason->getResponse() : null; $message = $formatter->format($request, $response, $reason); - $context = compact('request', 'response'); - - $logger->notice($message, $context); + $logger->notice($message, compact('request', 'response', 'duration')); return \GuzzleHttp\Promise\rejection_for($reason); } From 2ceaf6bd22d0e944b031c92a13814a812a1a49b8 Mon Sep 17 00:00:00 2001 From: Christian Jost Date: Wed, 14 Nov 2018 15:59:23 +0100 Subject: [PATCH 2/8] MAP-2890 Remove response content from being logged --- src/Middleware/LogMiddleware.php | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/Middleware/LogMiddleware.php b/src/Middleware/LogMiddleware.php index 585dd6b..127b834 100644 --- a/src/Middleware/LogMiddleware.php +++ b/src/Middleware/LogMiddleware.php @@ -65,21 +65,14 @@ public function log(): \Closure return $handler($request, $options)->then( function (ResponseInterface $response) use ($logger, $request, $formatter, &$duration) { $message = $formatter->format($request, $response); - $request->getBody()->rewind(); - $context = [ - 'request' => $this->normalizer->normalize($request), - 'response' => $this->normalizer->normalize($response), - 'client' => $this->clientName, - 'duration' => $duration, - ]; - $logger->info($message, $context); + $logger->info($message, $this->buildContext($request, $response, $duration)); return $response; }, function ($reason) use ($logger, $request, $formatter, &$duration) { $response = $reason instanceof RequestException ? $reason->getResponse() : null; $message = $formatter->format($request, $response, $reason); - $logger->notice($message, compact('request', 'response', 'duration')); + $logger->error($message, $this->buildContext($request, $response, $duration)); return \GuzzleHttp\Promise\rejection_for($reason); } @@ -99,4 +92,18 @@ public function setClientName(string $clientName): LogMiddleware $this->clientName = $clientName; return $this; } + + private function buildContext(?RequestInterface $request, ?ResponseInterface $response, float $duration) + { + $request->getBody()->rewind(); + $context = [ + 'request' => $this->normalizer->normalize($request), + 'response' => $this->normalizer->normalize($response), + 'client' => $this->clientName, + 'duration' => $duration, + ]; + $context['response']['body']['contents'] = ''; + + return $context; + } } From a15f22b4dba8f88e2793e9d7beb105bc8ae039b2 Mon Sep 17 00:00:00 2001 From: Christian Jost Date: Mon, 19 Nov 2018 11:22:46 +0100 Subject: [PATCH 3/8] MAP-2890 As a Developer, I have detailed information about running Akeneo imports, so that I can more precisely identify any problems * Remove nullable definition for `request` and `response` --- src/Middleware/LogMiddleware.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Middleware/LogMiddleware.php b/src/Middleware/LogMiddleware.php index 127b834..b09496b 100644 --- a/src/Middleware/LogMiddleware.php +++ b/src/Middleware/LogMiddleware.php @@ -93,7 +93,7 @@ public function setClientName(string $clientName): LogMiddleware return $this; } - private function buildContext(?RequestInterface $request, ?ResponseInterface $response, float $duration) + private function buildContext(RequestInterface $request, ResponseInterface $response, float $duration): array { $request->getBody()->rewind(); $context = [ From 5e28e7015607c09d40824509c2df33a7759443d0 Mon Sep 17 00:00:00 2001 From: Christian Jost Date: Mon, 19 Nov 2018 13:43:58 +0100 Subject: [PATCH 4/8] MAP-2890 As a Developer, I have detailed information about running Akeneo imports, so that I can more precisely identify any problems * Modify `changelog` regarding the `duration` --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a59810..19363be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ All Notable changes to `mapudo/guzzle-bundle` will be documented in this file. Updates should follow the [Keep a CHANGELOG](http://keepachangelog.com/) principles. +## [unreleased] - 2018-11-19 +### Changed +- Add `duration` property to be logged in `LogMiddleware` to keep track of the request duration + ## [2.1.1] - 2018-01-11 ### Changed - Changed the template include paths From e07f10178cc1a34150cfbe3eec68fd5f40c3692b Mon Sep 17 00:00:00 2001 From: Christian Jost Date: Mon, 19 Nov 2018 14:51:53 +0100 Subject: [PATCH 5/8] MAP-2890 As a Developer, I have detailed information about running Akeneo imports, so that I can more precisely identify any problems * Modify `changelog` regarding the `duration` --- src/Middleware/LogMiddleware.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Middleware/LogMiddleware.php b/src/Middleware/LogMiddleware.php index b09496b..b1ea876 100644 --- a/src/Middleware/LogMiddleware.php +++ b/src/Middleware/LogMiddleware.php @@ -93,7 +93,7 @@ public function setClientName(string $clientName): LogMiddleware return $this; } - private function buildContext(RequestInterface $request, ResponseInterface $response, float $duration): array + private function buildContext(RequestInterface $request, ResponseInterface $response, float $duration = null): array { $request->getBody()->rewind(); $context = [ From ef1b3dd7e9334d4949d9133a4288f52e1b0ca595 Mon Sep 17 00:00:00 2001 From: Christian Jost Date: Mon, 19 Nov 2018 16:08:07 +0100 Subject: [PATCH 6/8] MAP-2890 As a Developer, I have detailed information about running Akeneo imports, so that I can more precisely identify any problems * Modify `changelog` regarding the `duration` --- src/Middleware/LogMiddleware.php | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/Middleware/LogMiddleware.php b/src/Middleware/LogMiddleware.php index b1ea876..26b9abf 100644 --- a/src/Middleware/LogMiddleware.php +++ b/src/Middleware/LogMiddleware.php @@ -93,16 +93,21 @@ public function setClientName(string $clientName): LogMiddleware return $this; } - private function buildContext(RequestInterface $request, ResponseInterface $response, float $duration = null): array - { + private function buildContext( + RequestInterface $request, + ResponseInterface $response = null, + float $duration = null + ): array { $request->getBody()->rewind(); $context = [ 'request' => $this->normalizer->normalize($request), - 'response' => $this->normalizer->normalize($response), 'client' => $this->clientName, 'duration' => $duration, ]; - $context['response']['body']['contents'] = ''; + + if ($response !== null) { + $context['response'] = $this->normalizer->normalize($response); + } return $context; } From f43bed5738842d752dab71e4455709b22a983365 Mon Sep 17 00:00:00 2001 From: Theodoros Tzaferis Date: Thu, 29 Nov 2018 14:09:00 +0100 Subject: [PATCH 7/8] MAP-2890 Remove references --- src/Middleware/LogMiddleware.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Middleware/LogMiddleware.php b/src/Middleware/LogMiddleware.php index 26b9abf..ae16cd0 100644 --- a/src/Middleware/LogMiddleware.php +++ b/src/Middleware/LogMiddleware.php @@ -63,13 +63,13 @@ public function log(): \Closure }; return $handler($request, $options)->then( - function (ResponseInterface $response) use ($logger, $request, $formatter, &$duration) { + function (ResponseInterface $response) use ($logger, $request, $formatter, $duration) { $message = $formatter->format($request, $response); $logger->info($message, $this->buildContext($request, $response, $duration)); return $response; }, - function ($reason) use ($logger, $request, $formatter, &$duration) { + function ($reason) use ($logger, $request, $formatter, $duration) { $response = $reason instanceof RequestException ? $reason->getResponse() : null; $message = $formatter->format($request, $response, $reason); $logger->error($message, $this->buildContext($request, $response, $duration)); From 105553889fe3f266ed7253ec7678eef464c29e4d Mon Sep 17 00:00:00 2001 From: Theodoros Tzaferis Date: Thu, 29 Nov 2018 14:10:33 +0100 Subject: [PATCH 8/8] MAP-2890 Update version highlights --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 19363be..66f0467 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All Notable changes to `mapudo/guzzle-bundle` will be documented in this file. Updates should follow the [Keep a CHANGELOG](http://keepachangelog.com/) principles. -## [unreleased] - 2018-11-19 +## [2.2.0] - 2018-11-29 ### Changed - Add `duration` property to be logged in `LogMiddleware` to keep track of the request duration