From c2d1d22b710ea91e1454834a12c1ca7d48065763 Mon Sep 17 00:00:00 2001 From: Artur Moczulski Date: Sun, 17 Jun 2018 07:16:39 -0700 Subject: [PATCH] Sync RollbarHandler with the latest changes rollbar/rollbar package (#1042) * Sync RollbarHandler and RollbarHandlerTest with the latest changes in the rollbar/rollbar package (1.0+) --- composer.json | 3 +- src/Monolog/Handler/RollbarHandler.php | 36 +++++++------------- tests/Monolog/Handler/RollbarHandlerTest.php | 23 ++++++++----- 3 files changed, 29 insertions(+), 33 deletions(-) diff --git a/composer.json b/composer.json index af3ecc70..bd253ee6 100644 --- a/composer.json +++ b/composer.json @@ -28,7 +28,8 @@ "php-console/php-console": "^3.1.3", "jakub-onderka/php-parallel-lint": "^0.9", "predis/predis": "^1.1", - "phpspec/prophecy": "^1.6.1" + "phpspec/prophecy": "^1.6.1", + "rollbar/rollbar": "^1.3" }, "suggest": { "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", diff --git a/src/Monolog/Handler/RollbarHandler.php b/src/Monolog/Handler/RollbarHandler.php index 5b6678e5..f330eeaa 100644 --- a/src/Monolog/Handler/RollbarHandler.php +++ b/src/Monolog/Handler/RollbarHandler.php @@ -11,7 +11,7 @@ namespace Monolog\Handler; -use RollbarNotifier; +use Rollbar\RollbarLogger; use Throwable; use Monolog\Logger; @@ -19,7 +19,7 @@ use Monolog\Logger; * Sends errors to Rollbar * * If the context data contains a `payload` key, that is used as an array - * of payload options to RollbarNotifier's report_message/report_exception methods. + * of payload options to RollbarLogger's log method. * * Rollbar's context info will contain the context + extra keys from the log record * merged, and then on top of that a few keys: @@ -34,11 +34,9 @@ use Monolog\Logger; class RollbarHandler extends AbstractProcessingHandler { /** - * Rollbar notifier - * - * @var RollbarNotifier + * @var RollbarLogger */ - protected $rollbarNotifier; + protected $rollbarLogger; protected $levelMap = [ Logger::DEBUG => 'debug', @@ -61,13 +59,13 @@ class RollbarHandler extends AbstractProcessingHandler protected $initialized = false; /** - * @param RollbarNotifier $rollbarNotifier RollbarNotifier object constructed with valid token + * @param RollbarLogger $rollbarLogger RollbarLogger object constructed with valid token * @param int $level The minimum logging level at which this handler will be triggered * @param bool $bubble Whether the messages that are handled can bubble up the stack or not */ - public function __construct(RollbarNotifier $rollbarNotifier, $level = Logger::ERROR, $bubble = true) + public function __construct(RollbarLogger $rollbarLogger, $level = Logger::ERROR, $bubble = true) { - $this->rollbarNotifier = $rollbarNotifier; + $this->rollbarLogger = $rollbarLogger; parent::__construct($level, $bubble); } @@ -84,11 +82,6 @@ class RollbarHandler extends AbstractProcessingHandler } $context = $record['context']; - $payload = []; - if (isset($context['payload'])) { - $payload = $context['payload']; - unset($context['payload']); - } $context = array_merge($context, $record['extra'], [ 'level' => $this->levelMap[$record['level']], 'monolog_level' => $record['level_name'], @@ -97,19 +90,14 @@ class RollbarHandler extends AbstractProcessingHandler ]); if (isset($context['exception']) && $context['exception'] instanceof Throwable) { - $payload['level'] = $context['level']; $exception = $context['exception']; unset($context['exception']); - - $this->rollbarNotifier->report_exception($exception, $context, $payload); + $toLog = $exception; } else { - $this->rollbarNotifier->report_message( - $record['message'], - $context['level'], - $context, - $payload - ); + $toLog = $record['message']; } + + $this->rollbarLogger->log($context['level'], $toLog, $context); $this->hasRecords = true; } @@ -117,7 +105,7 @@ class RollbarHandler extends AbstractProcessingHandler public function flush() { if ($this->hasRecords) { - $this->rollbarNotifier->flush(); + $this->rollbarLogger->flush(); $this->hasRecords = false; } } diff --git a/tests/Monolog/Handler/RollbarHandlerTest.php b/tests/Monolog/Handler/RollbarHandlerTest.php index 89fc9cb9..96d8a30a 100644 --- a/tests/Monolog/Handler/RollbarHandlerTest.php +++ b/tests/Monolog/Handler/RollbarHandlerTest.php @@ -15,6 +15,7 @@ use Exception; use Monolog\Test\TestCase; use Monolog\Logger; use PHPUnit_Framework_MockObject_MockObject as MockObject; +use Rollbar\RollbarLogger; /** * @author Erik Johansson @@ -27,7 +28,7 @@ class RollbarHandlerTest extends TestCase /** * @var MockObject */ - private $rollbarNotifier; + private $rollbarLogger; /** * @var array @@ -38,7 +39,7 @@ class RollbarHandlerTest extends TestCase { parent::setUp(); - $this->setupRollbarNotifierMock(); + $this->setupRollbarLoggerMock(); } /** @@ -54,15 +55,21 @@ class RollbarHandlerTest extends TestCase $this->assertEquals('debug', $this->reportedExceptionArguments['payload']['level']); } - private function setupRollbarNotifierMock() + private function setupRollbarLoggerMock() { - $this->rollbarNotifier = $this->getMockBuilder('RollbarNotifier') - ->setMethods(array('report_message', 'report_exception', 'flush')) + $config = array( + 'access_token' => 'ad865e76e7fb496fab096ac07b1dbabb', + 'environment' => 'test' + ); + + $this->rollbarLogger = $this->getMockBuilder(RollbarLogger::class) + ->setConstructorArgs(array($config)) + ->setMethods(array('log')) ->getMock(); - $this->rollbarNotifier + $this->rollbarLogger ->expects($this->any()) - ->method('report_exception') + ->method('log') ->willReturnCallback(function ($exception, $context, $payload) { $this->reportedExceptionArguments = compact('exception', 'context', 'payload'); }); @@ -70,7 +77,7 @@ class RollbarHandlerTest extends TestCase private function createHandler(): RollbarHandler { - return new RollbarHandler($this->rollbarNotifier, Logger::DEBUG); + return new RollbarHandler($this->rollbarLogger, Logger::DEBUG); } private function createExceptionRecord($level = Logger::DEBUG, $message = 'test', $exception = null): array