mirror of
https://github.com/Seldaek/monolog.git
synced 2025-08-02 03:10:15 +02:00
Add support for previous exceptions in LineFormatter
This commit is contained in:
@@ -73,7 +73,14 @@ class LineFormatter extends NormalizerFormatter
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($data instanceof \Exception) {
|
if ($data instanceof \Exception) {
|
||||||
return '[object] ('.get_class($data).': '.$data->getMessage().' at '.$data->getFile().':'.$data->getLine().')';
|
$previousText = '';
|
||||||
|
if ($previous = $data->getPrevious()) {
|
||||||
|
do {
|
||||||
|
$previousText .= ', '.get_class($previous).': '.$previous->getMessage().' at '.$previous->getFile().':'.$previous->getLine();
|
||||||
|
} while ($previous = $previous->getPrevious());
|
||||||
|
}
|
||||||
|
|
||||||
|
return '[object] ('.get_class($data).': '.$data->getMessage().' at '.$data->getFile().':'.$data->getLine().$previousText.')';
|
||||||
}
|
}
|
||||||
|
|
||||||
return parent::normalize($data);
|
return parent::normalize($data);
|
||||||
|
@@ -107,6 +107,24 @@ class LineFormatterTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->assertEquals('['.date('Y-m-d').'] core.CRITICAL: foobar {"exception":"[object] (RuntimeException: Foo at '.substr($path, 1, -1).':'.(__LINE__-8).')"} []'."\n", $message);
|
$this->assertEquals('['.date('Y-m-d').'] core.CRITICAL: foobar {"exception":"[object] (RuntimeException: Foo at '.substr($path, 1, -1).':'.(__LINE__-8).')"} []'."\n", $message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testDefFormatWithPreviousException()
|
||||||
|
{
|
||||||
|
$formatter = new LineFormatter(null, 'Y-m-d');
|
||||||
|
$previous = new \LogicException('Wut?');
|
||||||
|
$message = $formatter->format(array(
|
||||||
|
'level_name' => 'CRITICAL',
|
||||||
|
'channel' => 'core',
|
||||||
|
'context' => array('exception' => new \RuntimeException('Foo', 0, $previous)),
|
||||||
|
'datetime' => new \DateTime,
|
||||||
|
'extra' => array(),
|
||||||
|
'message' => 'foobar',
|
||||||
|
));
|
||||||
|
|
||||||
|
$path = str_replace('\\/', '/', json_encode(__FILE__));
|
||||||
|
|
||||||
|
$this->assertEquals('['.date('Y-m-d').'] core.CRITICAL: foobar {"exception":"[object] (RuntimeException: Foo at '.substr($path, 1, -1).':'.(__LINE__-8).', LogicException: Wut? at '.substr($path, 1, -1).':'.(__LINE__-12).')"} []'."\n", $message);
|
||||||
|
}
|
||||||
|
|
||||||
public function testBatchFormat()
|
public function testBatchFormat()
|
||||||
{
|
{
|
||||||
$formatter = new LineFormatter(null, 'Y-m-d');
|
$formatter = new LineFormatter(null, 'Y-m-d');
|
||||||
|
Reference in New Issue
Block a user