1
0
mirror of https://github.com/Seldaek/monolog.git synced 2025-08-06 21:26:43 +02:00

PHP7 compat for exception classes, fixes #718

This commit is contained in:
Jordi Boggiano
2016-03-01 16:20:06 +00:00
parent c688ff17eb
commit 481fc4cfa1
3 changed files with 21 additions and 7 deletions

View File

@@ -163,12 +163,17 @@ class JsonFormatter extends NormalizerFormatter
* Normalizes given exception with or without its own stack trace based on
* `includeStacktraces` property.
*
* @param Exception $e
* @param Exception|Throwable $e
*
* @return array
*/
protected function normalizeException(Exception $e)
protected function normalizeException($e)
{
// TODO 2.0 only check for Throwable
if (!$e instanceof Exception && !$e instanceof \Throwable) {
throw new \InvalidArgumentException('Exception/Throwable expected, got '.gettype($e).' / '.get_class($e));
}
$data = array(
'class' => get_class($e),
'message' => $e->getMessage(),

View File

@@ -11,8 +11,6 @@
namespace Monolog\Formatter;
use Exception;
/**
* Formats incoming records into a one-line string
*
@@ -114,8 +112,13 @@ class LineFormatter extends NormalizerFormatter
return $this->replaceNewlines($this->convertToString($value));
}
protected function normalizeException(Exception $e)
protected function normalizeException($e)
{
// TODO 2.0 only check for Throwable
if (!$e instanceof \Exception && !$e instanceof \Throwable) {
throw new \InvalidArgumentException('Exception/Throwable expected, got '.gettype($e).' / '.get_class($e));
}
$previousText = '';
if ($previous = $e->getPrevious()) {
do {

View File

@@ -90,7 +90,8 @@ class NormalizerFormatter implements FormatterInterface
}
if (is_object($data)) {
if ($data instanceof Exception) {
// TODO 2.0 only check for Throwable
if ($data instanceof Exception || (PHP_VERSION_ID > 70000 && $data instanceof \Throwable)) {
return $this->normalizeException($data);
}
@@ -112,8 +113,13 @@ class NormalizerFormatter implements FormatterInterface
return '[unknown('.gettype($data).')]';
}
protected function normalizeException(Exception $e)
protected function normalizeException($e)
{
// TODO 2.0 only check for Throwable
if (!$e instanceof Exception && !$e instanceof \Throwable) {
throw new \InvalidArgumentException('Exception/Throwable expected, got '.gettype($e).' / '.get_class($e));
}
$data = array(
'class' => get_class($e),
'message' => $e->getMessage(),