diff --git a/spec/LoggerPluginSpec.php b/spec/LoggerPluginSpec.php index 9143a23..91325a1 100644 --- a/spec/LoggerPluginSpec.php +++ b/spec/LoggerPluginSpec.php @@ -40,7 +40,11 @@ function it_logs_request_and_response( ResponseInterface $response ) { $formatter->formatRequest($request)->willReturn('GET / 1.1'); - $formatter->formatResponse($response)->willReturn('200 OK 1.1'); + if (method_exists(Formatter\SimpleFormatter::class, 'formatResponseForRequest')) { + $formatter->formatResponseForRequest($response, $request)->willReturn('200 OK 1.1'); + } else { + $formatter->formatResponse($response)->willReturn('200 OK 1.1'); + } $logger->info( "Sending request:\nGET / 1.1", @@ -108,7 +112,11 @@ function it_logs_response_within_exception( ResponseInterface $response ) { $formatter->formatRequest($request)->willReturn('GET / 1.1'); - $formatter->formatResponse($response)->willReturn('403 Forbidden 1.1'); + if (method_exists(Formatter\SimpleFormatter::class, 'formatResponseForRequest')) { + $formatter->formatResponseForRequest($response, $request)->willReturn('403 Forbidden 1.1'); + } else { + $formatter->formatResponse($response)->willReturn('403 Forbidden 1.1'); + } $exception = new HttpException('Forbidden', $request->getWrappedObject(), $response->getWrappedObject()); diff --git a/src/LoggerPlugin.php b/src/LoggerPlugin.php index 0337cd6..162dc9b 100644 --- a/src/LoggerPlugin.php +++ b/src/LoggerPlugin.php @@ -35,10 +35,13 @@ protected function doHandleRequest(RequestInterface $request, callable $next, ca $uid = uniqid('', true); $this->logger->info(sprintf("Sending request:\n%s", $this->formatter->formatRequest($request)), ['request' => $request, 'uid' => $uid]); - return $next($request)->then(function (ResponseInterface $response) use ($start, $uid) { + return $next($request)->then(function (ResponseInterface $response) use ($start, $uid, $request) { $milliseconds = (int) round(hrtime(true) / 1E6 - $start); + $formattedResponse = method_exists($this->formatter, 'formatResponseForRequest') + ? $this->formatter->formatResponseForRequest($response, $request) + : $this->formatter->formatResponse($response); $this->logger->info( - sprintf("Received response:\n%s", $this->formatter->formatResponse($response)), + sprintf("Received response:\n%s", $formattedResponse), [ 'milliseconds' => $milliseconds, 'uid' => $uid, @@ -49,8 +52,11 @@ protected function doHandleRequest(RequestInterface $request, callable $next, ca }, function (Exception $exception) use ($request, $start, $uid) { $milliseconds = (int) round((hrtime(true) / 1E6 - $start)); if ($exception instanceof Exception\HttpException) { + $formattedResponse = method_exists($this->formatter, 'formatResponseForRequest') + ? $this->formatter->formatResponseForRequest($exception->getResponse(), $exception->getRequest()) + : $this->formatter->formatResponse($exception->getResponse()); $this->logger->error( - sprintf("Error:\n%s\nwith response:\n%s", $exception->getMessage(), $this->formatter->formatResponse($exception->getResponse())), + sprintf("Error:\n%s\nwith response:\n%s", $exception->getMessage(), $formattedResponse), [ 'exception' => $exception, 'milliseconds' => $milliseconds,