diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Monolog/Formatter/NormalizerFormatter.php | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/Monolog/Formatter/NormalizerFormatter.php b/src/Monolog/Formatter/NormalizerFormatter.php index bd524bd..8e0e7a5 100644 --- a/src/Monolog/Formatter/NormalizerFormatter.php +++ b/src/Monolog/Formatter/NormalizerFormatter.php @@ -98,19 +98,25 @@ class NormalizerFormatter implements FormatterInterface return $this->normalizeException($data); } - // non-serializable objects that implement __toString stringified - if (method_exists($data, '__toString') && !$data instanceof \JsonSerializable) { + if ($data instanceof \JsonSerializable) { + $value = $data->jsonSerialize(); + } elseif (method_exists($data, '__toString')) { $value = $data->__toString(); } else { - // the rest is json-serialized in some way - $value = $this->toJson($data, true); + // the rest is normalized by json encoding and decoding it + $encoded = $this->toJson($data, true); + if ($encoded === false) { + $value = 'JSON_ERROR'; + } else { + $value = json_decode($encoded, true); + } } - return sprintf("[object] (%s: %s)", get_class($data), $value); + return [get_class($data) => $value]; } if (is_resource($data)) { - return sprintf('[resource] (%s)', get_resource_type($data)); + return sprintf('[resource(%s)]', get_resource_type($data)); } return '[unknown('.gettype($data).')]'; |