From 1086e03b61cb54499577ff949a62c30c4976554a Mon Sep 17 00:00:00 2001 From: Morris Jobke Date: Fri, 12 Jan 2018 16:41:09 +0100 Subject: [PATCH] Log exceptions as nested array instead of encoded json Signed-off-by: Morris Jobke --- lib/private/Log.php | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/lib/private/Log.php b/lib/private/Log.php index bed0321bef341..3e2327239f10f 100644 --- a/lib/private/Log.php +++ b/lib/private/Log.php @@ -245,7 +245,7 @@ public function debug($message, array $context = array()) { * Logs with an arbitrary level. * * @param mixed $level - * @param string $message + * @param string|array $message * @param array $context * @return void */ @@ -271,14 +271,16 @@ public function log($level, $message, array $context = array()) { } else { $app = 'no app in context'; } - // interpolate $message as defined in PSR-3 - $replace = array(); - foreach ($context as $key => $val) { - $replace['{' . $key . '}'] = $val; - } + if (is_string($message)) { + // interpolate $message as defined in PSR-3 + $replace = array(); + foreach ($context as $key => $val) { + $replace['{' . $key . '}'] = $val; + } - // interpolate replacement values into the message and return - $message = strtr($message, $replace); + // interpolate replacement values into the message and return + $message = strtr($message, $replace); + } /** * check for a special log condition - this enables an increased log on @@ -337,6 +339,7 @@ public function logException($exception, array $context = array()) { unset($context['level']); } $data = array( + 'CustomMessage' => isset($context['message']) ? $context['message'] : '--', 'Exception' => get_class($exception), 'Message' => $exception->getMessage(), 'Code' => $exception->getCode(), @@ -345,12 +348,11 @@ public function logException($exception, array $context = array()) { 'Line' => $exception->getLine(), ); $data['Trace'] = preg_replace('!(' . implode('|', $this->methodsWithSensitiveParameters) . ')\(.*\)!', '$1(*** sensitive parameters replaced ***)', $data['Trace']); + $data['Trace'] = explode("\n", $data['Trace']); if ($exception instanceof HintException) { $data['Hint'] = $exception->getHint(); } - $msg = isset($context['message']) ? $context['message'] : 'Exception'; - $msg .= ': ' . json_encode($data); - $this->log($level, $msg, $context); + $this->log($level, $data, $context); $context['level'] = $level; if (!is_null($this->crashReporters)) { $this->crashReporters->delegateReport($exception, $context);