mirror of
https://github.com/Seldaek/monolog.git
synced 2025-10-25 02:26:16 +02:00
Resolve json encoding errors issue globally, refs #137
This commit is contained in:
@@ -81,10 +81,11 @@ class LineFormatter extends NormalizerFormatter
|
||||
return (string) $data;
|
||||
}
|
||||
|
||||
$data = $this->normalize($data);
|
||||
if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
|
||||
return json_encode($this->normalize($data), JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
|
||||
return $this->toJson($data);
|
||||
}
|
||||
|
||||
return str_replace('\\/', '/', json_encode($this->normalize($data)));
|
||||
return str_replace('\\/', '/', json_encode($data));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ class NormalizerFormatter implements FormatterInterface
|
||||
}
|
||||
|
||||
if (is_object($data)) {
|
||||
return sprintf("[object] (%s: %s)", get_class($data), $this->toJson($data));
|
||||
return sprintf("[object] (%s: %s)", get_class($data), $this->toJson($data, true));
|
||||
}
|
||||
|
||||
if (is_resource($data)) {
|
||||
@@ -81,8 +81,17 @@ class NormalizerFormatter implements FormatterInterface
|
||||
return '[unknown('.gettype($data).')]';
|
||||
}
|
||||
|
||||
protected function toJson($data)
|
||||
protected function toJson($data, $ignoreErrors = false)
|
||||
{
|
||||
// suppress json_encode errors since it's twitchy with some inputs
|
||||
if ($ignoreErrors) {
|
||||
if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
|
||||
return @json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
|
||||
}
|
||||
|
||||
return @json_encode($data);
|
||||
}
|
||||
|
||||
if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
|
||||
return json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
|
||||
}
|
||||
|
||||
@@ -67,13 +67,8 @@ class WildfireFormatter extends NormalizerFormatter
|
||||
$message = reset($message);
|
||||
}
|
||||
|
||||
// Handle json_encode recursion error
|
||||
if ($handleError) {
|
||||
set_error_handler(function () { });
|
||||
}
|
||||
|
||||
// Create JSON object describing the appearance of the message in the console
|
||||
$json = json_encode(array(
|
||||
$json = $this->toJson(array(
|
||||
array(
|
||||
'Type' => $this->logLevels[$record['level']],
|
||||
'File' => $file,
|
||||
@@ -81,11 +76,7 @@ class WildfireFormatter extends NormalizerFormatter
|
||||
'Label' => $record['channel'],
|
||||
),
|
||||
$message,
|
||||
));
|
||||
|
||||
if ($handleError) {
|
||||
restore_error_handler();
|
||||
}
|
||||
), $handleError);
|
||||
|
||||
// The message itself is a serialization of the above JSON object + it's length
|
||||
return sprintf(
|
||||
|
||||
Reference in New Issue
Block a user