1
0
mirror of https://github.com/Seldaek/monolog.git synced 2025-08-06 13:16:39 +02:00

Add level parameter to payload when reporting Rollbar exceptions (#852)

This commit is contained in:
Erik Johansson
2017-03-19 00:49:00 +01:00
committed by Jordi Boggiano
parent 25da38373a
commit 81e8bf6189
2 changed files with 83 additions and 0 deletions

View File

@@ -97,6 +97,7 @@ class RollbarHandler extends AbstractProcessingHandler
));
if (isset($context['exception']) && $context['exception'] instanceof Exception) {
$payload['level'] = $context['level'];
$exception = $context['exception'];
unset($context['exception']);

View File

@@ -0,0 +1,82 @@
<?php declare(strict_types=1);
/*
* This file is part of the Monolog package.
*
* (c) Jordi Boggiano <j.boggiano@seld.be>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Monolog\Handler;
use Exception;
use Monolog\Test\TestCase;
use Monolog\Logger;
use PHPUnit_Framework_MockObject_MockObject as MockObject;
/**
* @author Erik Johansson <erik.pm.johansson@gmail.com>
* @see https://rollbar.com/docs/notifier/rollbar-php/
*
* @coversDefaultClass Monolog\Handler\RollbarHandler
*/
class RollbarHandlerTest extends TestCase
{
/**
* @var MockObject
*/
private $rollbarNotifier;
/**
* @var array
*/
private $reportedExceptionArguments = null;
protected function setUp()
{
parent::setUp();
$this->setupRollbarNotifierMock();
}
/**
* When reporting exceptions to Rollbar the
* level has to be set in the payload data
*/
public function testExceptionLogLevel()
{
$handler = $this->createHandler();
$handler->handle($this->createExceptionRecord(Logger::DEBUG));
$this->assertEquals('debug', $this->reportedExceptionArguments['payload']['level']);
}
private function setupRollbarNotifierMock()
{
$this->rollbarNotifier = $this->getMockBuilder('RollbarNotifier')
->setMethods(array('report_message', 'report_exception', 'flush'))
->getMock();
$this->rollbarNotifier
->expects($this->any())
->method('report_exception')
->willReturnCallback(function ($exception, $context, $payload) {
$this->reportedExceptionArguments = compact('exception', 'context', 'payload');
});
}
private function createHandler(): RollbarHandler
{
return new RollbarHandler($this->rollbarNotifier, Logger::DEBUG);
}
private function createExceptionRecord($level = Logger::DEBUG, $message = 'test', $exception = null): array
{
return $this->getRecord($level, $message, [
'exception' => $exception ?? new Exception()
]);
}
}