From d72b886978e6878fb55d163ccbbc1a4cf6427f47 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Thu, 29 Sep 2016 09:17:17 +0200 Subject: [PATCH 1/2] Add support for AWS SDK v3 --- composer.json | 2 +- src/Monolog/Handler/DynamoDbHandler.php | 24 +++++++++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/composer.json b/composer.json index b488c38b..f74b7b97 100644 --- a/composer.json +++ b/composer.json @@ -22,7 +22,7 @@ "sentry/sentry": "^0.13", "ruflin/elastica": ">=0.90 <3.0", "doctrine/couchdb": "~1.0@dev", - "aws/aws-sdk-php": "^2.4.9", + "aws/aws-sdk-php": "^2.4.9 || ^3.0", "php-amqplib/php-amqplib": "~2.4", "swiftmailer/swiftmailer": "~5.3", "php-console/php-console": "^3.1.3", diff --git a/src/Monolog/Handler/DynamoDbHandler.php b/src/Monolog/Handler/DynamoDbHandler.php index 7b208309..ad1011d3 100644 --- a/src/Monolog/Handler/DynamoDbHandler.php +++ b/src/Monolog/Handler/DynamoDbHandler.php @@ -13,6 +13,7 @@ namespace Monolog\Handler; use Aws\Common\Aws; use Aws\DynamoDb\DynamoDbClient; +use Aws\DynamoDb\Marshaler; use Monolog\Formatter\ScalarFormatter; use Monolog\Logger; @@ -36,6 +37,16 @@ class DynamoDbHandler extends AbstractProcessingHandler */ protected $table; + /** + * @var int + */ + protected $version; + + /** + * @var Marshaler + */ + protected $marshaler; + /** * @param DynamoDbClient $client * @param string $table @@ -44,8 +55,11 @@ class DynamoDbHandler extends AbstractProcessingHandler */ public function __construct(DynamoDbClient $client, $table, $level = Logger::DEBUG, $bubble = true) { - if (!defined('Aws\Common\Aws::VERSION') || version_compare('3.0', Aws::VERSION, '<=')) { - throw new \RuntimeException('The DynamoDbHandler is only known to work with the AWS SDK 2.x releases'); + if (defined('Aws\Common\Aws::VERSION') && version_compare(Aws::VERSION, '3.0', '>=')) { + $this->version = 3; + $this->marshaler = new Marshaler; + } else { + $this->version = 2; } $this->client = $client; @@ -60,7 +74,11 @@ class DynamoDbHandler extends AbstractProcessingHandler protected function write(array $record) { $filtered = $this->filterEmptyFields($record['formatted']); - $formatted = $this->client->formatAttributes($filtered); + if ($this->version === 3) { + $formatted = $this->marshaler->marshalItem($filtered); + } else { + $formatted = $this->client->formatAttributes($filtered); + } $this->client->putItem(array( 'TableName' => $this->table, From 6bf91fa40a48d455cf05d22e7de9427ffb7e9360 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Thu, 29 Sep 2016 09:17:31 +0200 Subject: [PATCH 2/2] Make sure MercurialProcessor fails gracefully --- src/Monolog/Processor/MercurialProcessor.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Monolog/Processor/MercurialProcessor.php b/src/Monolog/Processor/MercurialProcessor.php index 1be3f292..7c07a7e9 100644 --- a/src/Monolog/Processor/MercurialProcessor.php +++ b/src/Monolog/Processor/MercurialProcessor.php @@ -51,9 +51,13 @@ class MercurialProcessor } $result = explode(' ', trim(`hg id -nb`)); - return self::$cache = array( - 'branch' => $result[1], - 'revision' => $result[2], - ); + if (count($result) >= 3) { + return self::$cache = array( + 'branch' => $result[1], + 'revision' => $result[2], + ); + } + + return self::$cache = array(); } }