Skip to content
This repository has been archived by the owner on Oct 24, 2023. It is now read-only.

Commit

Permalink
feat(Logger): add correlation id to log as context object
Browse files Browse the repository at this point in the history
  • Loading branch information
Jens Schulze committed Sep 26, 2016
1 parent 63d78e5 commit 512536b
Showing 1 changed file with 44 additions and 1 deletion.
45 changes: 44 additions & 1 deletion src/Client/Adapter/Guzzle6Adapter.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

namespace Commercetools\Core\Client\Adapter;

use Commercetools\Core\Response\AbstractApiResponse;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;
use GuzzleHttp\MessageFormatter;
Expand All @@ -16,6 +17,7 @@
use Psr\Log\LoggerInterface;
use Commercetools\Core\Error\Message;
use Commercetools\Core\Error\ApiException;
use Psr\Log\LogLevel;

class Guzzle6Adapter implements AdapterInterface
{
Expand Down Expand Up @@ -44,7 +46,48 @@ public function __construct(array $options = [])
public function setLogger(LoggerInterface $logger)
{
$this->logger = $logger;
$this->addHandler(Middleware::log($logger, new MessageFormatter()));
$this->addHandler(self::log($logger, new MessageFormatter()));
}

/**
* Middleware that logs requests, responses, and errors using a message
* formatter.
*
* @param LoggerInterface $logger Logs messages.
* @param MessageFormatter $formatter Formatter used to create message strings.
* @param string $logLevel Level at which to log requests.
*
* @return callable Returns a function that accepts the next handler.
*/
private static function log(LoggerInterface $logger, MessageFormatter $formatter, $logLevel = LogLevel::INFO)
{
return function (callable $handler) use ($logger, $formatter, $logLevel) {
return function ($request, array $options) use ($handler, $logger, $formatter, $logLevel) {
return $handler($request, $options)->then(
function ($response) use ($logger, $request, $formatter, $logLevel) {
$message = $formatter->format($request, $response);
$context[AbstractApiResponse::X_CORRELATION_ID] = $response->getHeader(
AbstractApiResponse::X_CORRELATION_ID
);
$logger->log($logLevel, $message, $context);
return $response;
},
function ($reason) use ($logger, $request, $formatter) {
$response = null;
$context = [];
if ($reason instanceof RequestException) {
$response = $reason->getResponse();
$context[AbstractApiResponse::X_CORRELATION_ID] = $response->getHeader(
AbstractApiResponse::X_CORRELATION_ID
);
}
$message = $formatter->format($request, $response, $reason);
$logger->notice($message, $context);
return \GuzzleHttp\Promise\rejection_for($reason);
}
);
};
};
}

public function addHandler($handler)
Expand Down

0 comments on commit 512536b

Please # to comment.