mirror of
https://github.com/Seldaek/monolog.git
synced 2025-08-06 21:26:43 +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) {
|
if (isset($context['exception']) && $context['exception'] instanceof Exception) {
|
||||||
|
$payload['level'] = $context['level'];
|
||||||
$exception = $context['exception'];
|
$exception = $context['exception'];
|
||||||
unset($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