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:
committed by
Jordi Boggiano
parent
25da38373a
commit
81e8bf6189
@@ -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']);
|
||||
|
||||
|
82
tests/Monolog/Handler/RollbarHandlerTest.php
Normal file
82
tests/Monolog/Handler/RollbarHandlerTest.php
Normal 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()
|
||||
]);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user