message, Throwable::class)) { $exception = $record->message; $message = $this->normalizeException($exception); $context = $record->context; $context['exception'] = $exception; if ($exception->getPrevious()) { $context['previous'] = $this->walkException($exception); } $new_record = new LogRecord( $record->datetime, $record->channel, $record->level, json_encode($message), $context, $record->extra ); $record = $new_record; } $normalized = $this->normalize($record, $this->maxNormalizeDepth); return $normalized['message']; } protected function walkException(Throwable $exception, int $depth = 0): array { $output = []; $currentDepth = $depth; while ($previous = $exception->getPrevious() and $currentDepth < $this->maxNormalizeDepth) { $output []= $this->normalizeException($previous); } return $output; } }